環境
- Unity 5.5.0p2
- DOTween 1.1.310
あまりDOPath
、DOLocalPath
を使ってこなかったので気づきませんでしたが、この2つを使用する際は、SetLookAt
関数が使用できます。
Tween中のオブジェクトの向きを指定可
SetLookAtを使用すると、トゥイーン中のオブジェクトの向きを動的に更新してくれます。
- Vectro3 向くポジション
- Transform 向くターゲット
- float lookAhead
このように3種の型をサポートしています。
Vector3
, Transform
はイメージしやすいですが、float型のlookAhead
とはなんぞや?となりました。
※公式にlookAheadと説明されております。
※SetLookAt関数第2引数はオブジェクトが向く方向、第3引数はオブジェクトの上方向を指定します。
実際にトゥイーンさせてみる
transform.DOLocalPath (new Vector3[]{ new Vector3 (2.6f, 0, -2f), Vector3.zero }, 4f, PathType.CatmullRom) .SetLookAt (0.001f, Vector3.forward) .SetEase (Ease.Linear);
0.001fを指定
transform.DOLocalPath (new Vector3[]{ new Vector3 (2.6f, 0, -2f), Vector3.zero }, 4f, PathType.CatmullRom) .SetLookAt (0.3f, Vector3.forward) .SetEase (Ease.Linear);
0.3fを指定
よ〜〜〜く見比べないと分かりませんが、後者Unity-chanの方がカーブを曲がる際にカーブを先読みした形で身体を傾けていることが分かります。
どうやらlookAheadで指定した秒数先の方向
をセットしてくれているようです。
値が小さければ小さいほど、カーブの方向を向いてくれます。
ソースコードを読むと最小値は0.0001
とのことです。それ以下を指定してもClampされます。
まとめ
今回SD Unity-chanを走らせてみましたが、2つのアニメーションを見比べると前者はいかにも調整前感がにじみ出ています。一方後者のUnity-chanはゴールを地点を見ながら走ってる印象を与えるのでよりリアルな走行に見えてきます。
SetLookAtの引数float型(lookAhead)
はとても便利だと思いました。