unity3d Tweener学习一

DOTween是一款免费开源的Unity动画引擎,支持多种平台,提供快速高效的对象属性动画。本文介绍其基本使用方法,包括移动、旋转、缩放及特殊效果如跳跃、冲压等,并演示了如何控制动画。
DOTween是一个快速,高效,完全统一的类型安全的对象属性动画引擎,免费开源,大量的高级特性.
DoTween兼容Unity4.5以上的版本,支持的平台: Win, Mac, Unity WebPlayer, WebGL,  iOSAndroid,Windows Phone 8, Windows Store, PS Vita (PSM), PS4,Xbox One平台,


特性:
  • 速度和效率: 不仅非常快,而且非常有效:一切都是缓存和重用,避免无用的GC分配。
  • 快捷: 使用扩展方法扩展公共对象用户方便编写代码如下

    • [AppleScript]  纯文本查看  复制代码
      ?
      1
      2
      3
      4
      5
      6
      / / Move a transform to position 1 , 2 , 3 in 1 second
      transform.DOMove ( new Vector 3 ( 1 , 2 , 3 ) , 1 ) ;
      / / Scale the Y of a transform to 3 in 1 second
      transform.DOScaleY ( 3 , 1 ) ;
      / / Pause a transform 's tween
      transform.DOPause ( ) ;


  • 几乎支持任何动画: 支持属性数字,非数字, 字符串和富文本动画展现
  • 还有很多我就不一一介绍了

简单移动Cube到达目的地:
[AppleScript]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
public Transform cube;
 
     / / Use this for initialization
     void Start ( ) {
         / / 0 , 4 , 0 的位置移动过去
         cube.DOMove ( new Vector 3 ( 0 , 4 , 0 ) , 2 ) ;                   
         / / 0 , 4 , 0 的位置移动过来
         cube.DOMove ( new Vector 3 ( 0 , 4 , 0 ) , 2 ) .From ( ) ;
         / / 0 , 4 , 0 的位置来回移动
         cube.DOMove ( new Vector 3 ( 0 , 4 , 0 ) , 2 ) .SetRelative ( ) .SetLoops ( -1 , LoopType.Yoyo ) ;
     
         / / 另一种写法
         DOTween.To ( ( ) = > cube. position , x = > cube. position = x , new Vector 3 ( 0 , 4 , 0 ) , 1 ) .SetRelative ( ) .SetLoops ( -1 , LoopType.Yoyo ) ;
     }


移动,旋转,缩放:
[AppleScript]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
/ / 向上移动 4 个单位
cube.transform.DOBlendableMoveBy ( new Vector 3 ( 0 , 4 , 0 ) , 2 ) ;
 
/ / 自身坐标向上移动 4 个单位
cube.transform.DOBlendableLocalMoveBy ( new Vector 3 ( 0 , 4 , 0 ) , 2 ) ;
 
/ / 旋转
cube.transform.DOBlendableRotateBy ( new Vector 3 ( 0 , 180 , 0 ) , 2 ) .SetLoops ( -1 , LoopType.Yoyo ) ;
 
/ / 本地坐标系转换 30
cube.transform.DOBlendableLocalRotateBy ( new Vector 3 ( 0 , 180 , 0 ) , 2 ) .SetLoops ( -1 , LoopType.Yoyo ) ;
 
   / / 开始值 ( 1 , 1 , 1 ) 5 秒内增加到 ( 3 , 3 , 3 )
       
cube.transform.DOBlendableScaleBy ( new Vector 3 ( 2 , 2 , 2 ) , 5 ) ;


跳跃,冲压机
DOJump(new Vector3(5, 0, 0), 5, 1,5); 假设cube坐标(0,0,0)最终跳跃到(5,0,0)位置,跳跃的中间最高度是5,跳跃1次,5秒完成
DOPunchPosition(new Vector3(10, 10, 10), 5); 在 5 秒内在原始坐标和下面坐标之间,来回冲压
DOPunchRotation(new Vector3(50, 50, 50), 5); 在 5 秒内在原始旋转和下面角度之间,来回冲压变化
DOPunchScale(new Vector3(5, 5, 5), 5); 在 5 秒内在原始比例和下面比例之间,来回冲压变化
控制DOTween方法:
DOComplete();    执行该方法,变化立即结束,且完成移动
DOFlip();    在变化过程中执行该方法,则物体慢慢的变回原样,如果变化已经完成,该方法无效
DOGoto(2); 变化过程中执行该方法,则物体变化到 第二秒 时该物体的位置、比例等
DOKill(); 停止掉当前的变化
DOPlayBackwards(); 播放结束之前,让物体倒序运动到原位
DOPlayForward(); 播放结束之前,让物体继续运动到目标位置
DORestart();    在变化结束之前,执行该方法,则重新开始变化
DORewind(); 变化过程中执行该方法,回到原始
DOPause(); 停止
DOPlay(); 开始
0
### 在 Unity 中使用 Tweener 控制 Camera 的 Size 变化 在 Unity 中,Tweener个强大的工具,可以用于创建平滑的动画效果。通过 `DOTween` 库,可以直接对 `Camera` 的 `orthographicSize` 属性进行控制,从而实现相机正交大小的变化[^1]。 以下是实现的具体方法: #### 使用 DOTween 修改 Camera 的 orthographicSize `DOTween` 提供了 `DOOrthoSize` 方法,专门用于修改正交相机的 `orthographicSize` 属性。以下是个示例代码,展示如何在 2 秒内将相机的正交大小从当前值平滑过渡到目标值: ```csharp using UnityEngine; using DG.Tweening; public class CameraSizeTween : MonoBehaviour { public Camera targetCamera; // 指定要操作的相机 public float newSize = 10f; // 目标正交大小 public float duration = 2f; // 动画持续时间 void Start() { if (targetCamera != null) { // 使用 DOOrthoSize 方法改变相机的正交大小 targetCamera.DOOrthoSize(newSize, duration); } else { Debug.LogError("请指定个有效的相机对象!"); } } } ``` #### 注意事项 - 确保所使用的相机是正交模式(Orthographic),否则 `orthographicSize` 属性将无效[^1]。 - 如果需要暂停或恢复动画,可以使用 `DOPause()` 和 `DOPlay()` 方法[^1]。 #### 示例扩展 如果需要更复杂的控制,例如在变化过程中添加回调函数或设置 easing 效果,可以参考以下代码: ```csharp void Start() { if (targetCamera != null) { targetCamera.DOOrthoSize(newSize, duration) .SetEase(Ease.InOutSine) // 设置缓动效果 .OnComplete(() => Debug.Log("相机大小变化完成!")); // 添加回调函数 } } ``` ### 总结 通过 `DOTween` 的 `DOOrthoSize` 方法,可以在 Unity 中轻松实现对 `Camera` 正交大小的动态控制。这种方法不仅简单易用,还支持丰富的动画选项和回调功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值