いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

DOTweenのSetLookAt()でQuadを使ったときのトラブル

 UnityでDOTweenを使っています。なかなか便利そうなんですが、「あれ?」と思ったことが。コルーチンやその他の仕掛けを使わず、オブジェクトの生成時に1回、次をコールするだけで指定した座標の点を通り、しかも(SetLookAt(Camera.main.transform)によって)動いている最中、オブジェクトがカメラの方を向いているようにできます。
//---------------------------
        go.transform.DOLocalPath(
            new[]
            {
                new Vector3(0, 5, 0),
                new Vector3(-20, 30, 20),
                new Vector3(20, -20, 0),
                new Vector3(-40, 15, 20),
                new Vector3(40, 0, 0),
            },
            .SetLookAt(Camera.main.transform);
//---------------------------
 ……確かにカメラの方を向いているんですが、ちょっと困ったことに。ぼくは次のようにQuadに画像を貼り付けて、これを動かしています(プレファブ化して、Instantiate()でオブジェクトを生成している)。

Quadに画像を貼り付ける方法については次の記事を参照してください。

www.omoshiro-suugaku.com

しかし、Quadにセットされたローカル座標のZ軸の指す方から眺めると次のように見えます。

要するに画像を裏から見ており、何も見えないのです……。SetLookAt()はオブジェクトのz軸を指定方向に向かせるようで、今回の場合は画像が見えない……と言うわけです。ならば……とプレファブのインスペクタを見て「Rotate」のy軸周りの角を180°としてみたんですが変化なし(初期状態を変更したつもり。その場ではローカルのy軸の先の方からきちんと見えるようになるが、実行中は無視されるみたい)。念のためx軸周りの角を変化させても同じでした。上下ひっくり返った状態が見えるかも、と思ったんですが。
 ちょっと考えると、SetLookAt()の引数を工夫するか、単純にはQuadをもう1枚作って画像を貼り付け、それを裏返したものをもとのQuadの子にする方法があります。今回は後者で対応しました。これならどちらから見ても見えます。こんな感じ。

 というわけでとりあえずの解決です! 逃げみたいな感じですが。