bRoken bLock

ヒビから漏れ出た心情を吐露するわけでもないブログ

Unity : transform.forward @第三者視点ゲーム(tpsなど)の主人公の移動

こんにちは

 

Unityの利用はまだまだ慣れない現状でつまずいたことのメモ。

 

 今回はUnityで、常に真後ろから棒人間を撮るものを作っていました。

f:id:niagzoo:20180705012126p:plain

 

 

「↑」で前進、「↓」で後退、「←」、「→」で左右に回転すると言った具合に某人間を移動させようとしました。

 

そのスクリプトがこちら。

(「R」を押しながらだと走る(速く動く)ようにしてます。) 

 

 

f:id:niagzoo:20180706163045p:plain

 

 

 

しかし、このスクリプトではなぜか正面を向いた時以外はまっすぐ歩いてくれません。。。

例えば、正面から90°右を向いた時は右方向へ(フィールド後ろ方向)、180°後ろを向いた時は真後ろへ、といった具合です。

 

これはtransform.forwardについての認識が誤っていたことに起因していました。

 

「transform.Translate("進む方向")」だとしたら「進む方向=正面=forward」ではないかと思ってしまったわけですね。

 

しかし、transform.forwardは「フィールドから見たときのその物体の正面方向のベクトル」を示しているようです。

つまり、先ほどの例でいうと、正面から90°右を向いた時はtransform.forward=(1,0,0)、180°後ろを向いた時はtransform.forward=(0,0,-1)となり、上記のような挙動を示したのでしょう。

 

ここは、下図のように書くべきでした。

 

f:id:niagzoo:20180706162743p:plain

 

これにより、「↑」を押すと正面に進む棒人間を作ることができました。