渋谷ほととぎす通信

Unity・ゲーム開発 技術で一生食べていく情報発信

DOTweenのSetLookAtを使ってワンランクアップの表現を手に入れよう

DOTweenの教科書という電子書籍を執筆しました。
興味ある方は読んでみてください。

※本題はここからです。

DOPathDOLocalPathには他のTweenにはないSetLookAt関数が用意されています。

トゥイーン中のオブジェクトの向きを指定する

SetLookAtを使用するとトゥイーン中のオブジェクトの向き
動的に更新してくれます。

  1. Vectro3 → 向くポジション
  2. Transform → 向くターゲット
  3. 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);

lookAheadに0.001fを指定

f:id:esakun:20161220001553g:plain

transform.DOLocalPath (new Vector3[]{ new Vector3 (2.6f, 0, -2f), Vector3.zero }, 4f, PathType.CatmullRom)
    .SetLookAt (0.3f, Vector3.forward)
    .SetEase (Ease.Linear);

lookAheadに0.3fを指定

f:id:esakun:20161220001522g:plain

よ〜〜〜く見比べないと分かりませんが、
後者Unity-chanの方がカーブを曲がる際に
カーブを先読みした形で身体を傾けていることが分かります。

どうやらlookAheadで指定した秒数先の方向をセットしてくれます。 値が小さければ小さいほど、カーブの方向を向いてくれます。
ソースコードを読むと最小値は0.0001でそれ以下を指定するとClampされます。

まとめ

今回SD Unity-chanを走らせてみましたが、
2つのアニメーションを見比べると前者はいかにも調整前感がにじみ出ています。

一方後者のUnity-chanはゴールを地点を見ながら走ってる印象を与えるのでよりリアルな走行に見えてきます。

SetLookAtの引数float型(lookAhead)はとても便利だと思いました。 SetLookAtを使いこなしてワンランクアップの表現を作ってみてください。

もっと詳しくDOTweenのことを知りたい方は、
DOTweenの教科書を読んでみてください。

環境

  • Unity 5.5.0p2
  • DOTween 1.1.310

あわせてどうぞ