DOTween-API學習(第一部分)

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)

	- 作用:允許進行顏色混合

		- 參數:顏色值,動畫持續時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章