DOTween-API 1
DOTween-API
Unity 2018.3.7f1,以 Vector3.one 爲單位舉例說明
安裝
從AssetStore安裝(推薦)
- 打開AssetStore,搜索DOTween(HOTween V2)
- 下載後import到項目中
從Github安裝
- 瀏覽器打開:https://github.com/Demigiant/dotween
- 下載包後直接導入到項目或複製全部文件到項目目錄
使用
測試是否導入成功
- 新建一個Unity項目,新建一個遊戲物體
- 新建一個腳本,把腳本附加到目標物體上
- 打開腳本,以C#爲例,using DG.Tweening,就可以調用相關方法了
Transform組件擴展方法
Position
DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>
- DOMove(this Transform target, Vector3 endValue, float duration, bool snapping = false)
- 舉例:持續2秒後移動至(1, 1, 1) (世界座標)
- transform.DOMove(Vector3.one, 2);
- DOLocalMoveX(float endValue, float duration, bool snapping = false)
- 舉例:持續2秒後向X軸移動1個單位距離(局部座標)
- transform.DOLocalMoveX(1, 2);
- DOLocalMove(Vector3 endValue, float duration, bool snapping = false)
- 舉例:持續2秒後移動至(1, 1, 1) (局部座標)
- transform.DOLocalMove(Vector3.one,2);
Rotation
DG.Tweening.Core.TweenerCore<Quaternion, Vector3, DG.Tweening.Plugins.Options.QuaternionOptions>
- DORotate(Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast)
- 舉例:持續2秒後旋轉至(1, 1, 1) (給定歐拉角、世界旋轉)
- transform.DORotate(Vector3.one, 2);
- DOLocalRotate(Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast)
- 舉例:持續2秒後旋轉至指定值(給定四元數、局部旋轉)
- transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
- DOLookAt(Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null)
- 舉例:持續2秒後,平滑的讓自身的Z軸正方向指向目標點
- transform.DOLookAt(Vector3.one, 2);
Scale
DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>
- DOScale(Vector3 endValue, float duration)
- 舉例:持續2秒後,平滑縮放至原物體2倍大小
- transform.DOScale(Vector3.one, 2);
Punch
Tweener
- transform.DOPunchPosition(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false)
- transform.DOPunchRotation(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
- transform.DOPunchScale(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
參數: punch, duration, vibrato , elasticity
punch
- 方向及強度
duration
- 動畫持續時間
vibrato
- 震動次數
elasticity(0 -> 1)
-
值爲0
- 在起始點和目標點之間運動
-
值不爲0
- 該值會自動乘上一個參數,併產生一個反向點
- 在這個點和目標點之間運動
Shake
Tweener
- Transform.DOShakePosition(float duration, float strength = 1, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true)
- Transform.DOShakeRotation(float duration, float strength = 90, int vibrato = 10, float randomness = 90, bool fadeOut = true)
- Transform.DOShakeScale(float duration, float strength = 1, int vibrato = 10, float randomness = 90, bool fadeOut = true)
參數:持續時間,力量,震動,隨機性,淡出
持續時間
力量
- 震動的幅度,可以理解成相機施加的力的大小
- 使用Vector3可以選擇每個軸向不同的強度
震動
- 震動次數
隨機性
- 改變震動方向的隨機值(大小:0~180)
淡出
- 運動最後是否緩慢移動回到原本位置
Blend
Tweener
- Transform.DOBlendableLocalMoveBy(Vector3 byValue, float duration, bool snapping = false)
- Transform.DOBlendableLocalRotateBy(Vector3 byValue, float duration, RotateMode mode = RotateMode.Fast)
- Transform.DOBlendableMoveBy(Vector3 byValue, float duration, bool snapping = false)
- Transform.DOBlendablePunchRotation(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1)
- Transform.DOBlendableRotateBy(Vector3 byValue, float duration, RotateMode mode = RotateMode.Fast)
- Transform.DOBlendableScaleBy(Vector3 byValue, float duration)
兩個特點
允許多個同時執行
- 舉例:
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);
- 假設起始點爲(0, 0, 0),那麼最後動畫停止時點的座標即爲(0, 1, 1)
是增量動畫
- 舉例:
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
- 假設起始點爲(1, 1, 1),最後動畫停止時的座標就是(2, 2, 2)
它的參數不是目標點,而是要移動的量
Material
新版Unity中,通過MashRender獲取材質。
Color
DG.Tweening.Core.TweenerCore<Color, Color, DG.Tweening.Plugins.Options.ColorOptions>
- Material.DOColor(Color endValue, string property, float duration)
- 舉例:顏色變化動畫(2秒,變紅)(注:同時使用多個時,取最後的顏色值)
- material.DOColor(Color.red, "_Color", 2);
- 參數:顏色,材質顏色配置名,動畫持續時間
Fade
DG.Tweening.Core.TweenerCore<Color, Color, DG.Tweening.Plugins.Options.ColorOptions>
- Material.DOFade(float endValue, string property, float duration)
- 舉例:透明度變化動畫(2秒,完全透明)
- material.DOFade(0, "_Color", 2);
- 參數:透明度,材質顏色配置名,動畫持續時間
GradientColor
Sequence
- Material.DOGradientColor(Gradient gradient, float duration)
- 搭配Gradient組件使用
- 參數:Gradient組件名,動畫持續時間
Offset
DG.Tweening.Core.TweenerCore<Vector2, Vector2, DG.Tweening.Plugins.Options.VectorOptions>
- Material.DOOffset(Vector2 endValue, int propertyID, float duration)
Vector
DG.Tweening.Core.TweenerCore<Vector4, Vector4, DG.Tweening.Plugins.Options.VectorOptions>
- Material.DOVector(Vector4 endValue, string property, float duration)
- 作用:直接改變材質shader的四維變量的值
- 參數:四維變量,材質四維向量配置名,動畫持續時間
BlendColor
Tweener
- Material.DOBlendableColor(Color endValue, float duration)
- 作用:允許進行顏色混合
- 參數:顏色值,動畫持續時間