Tip:
Highlight text to annotate it
X
Translate および Rotate の二つの関数は
ゲームオブジェクトの位置および回転を変更することが
主な使用方法です。
次のサンプルでは Translate からみてきます。
Translate の引数は
Vector3 型をとります。
そのためこのサンプルでは Translate で
Z 軸を下向きに移動させるため
X および Y には 0 を使用しています。
これは Update の中にあることから 毎フレーム 1 づつ移動させます。
では、どのような仕組みかをみていきます。
今回は floorbot オブジェクトに適用されています。
もし Play を押下すると 毎フレームごとに And you can see that if I press play
更新しているため、素早く移動することがわかります。
通常、
Translate を用いて行うことは
Time.deltaTime に乗算することです。
これはつまり 毎フレームごとに 1 メートル移動するのではなく
毎秒ごとに 1 メートル移動するということです。
それでは、明示的に
Vector3(0, 0, 1) とする前に、
Vector3.Forward をショートカットとして使用することができます。
そして 別の値を、まったく別の変数として
かけあわせることができます。
これによりインスペクタ上の変数により
制御することができます。
しかし、もし 28 00:01:14,114 --> 00:01:15,489 毎フレームごとに発生するのでなく
キー押下にもとづいて発生させたい場合はどうすればよいでしょうか。
具体的には 上向きの矢印を押した場合のみ
発生させたい場合、はどうすればよいか、ということです。
それができれば 下向き矢印の場合も
まったく同じことが出来ます。
今回は負の値をもった Vector3.Forward の値を使用することで
下向き矢印を押したときに
後ろ向きに移動します。
Transform.rotate も同じような仕組みで動作します。
今回も、 Vector3 型が引数として必要です。
この場合は Vector3.up という Vector3 のショートカットを
使用します。
これは どの軸を中心にまわるかを示します。
それが最初の引数であり、次の引数は
回転する移動量を示します。
次に TurnSpeed と呼ばれる変数を追加して、
Play を押下すると
オブジェクトを動かして
左や右の矢印によって回転させることが出来ます。
さらにこれらを public 変数としてセットしているため
スクリプトそのものを編集することなく
値の調整をすることが出来ます。
これらの関数はワールド座標ではなくローカル座標で動作
することを覚えておくべきです。
このため、 Vector3.forward または
Vector3.up と指定した場合は
適用されているオブジェクトのローカル軸にそって回転します。
さらに覚えておくべきこととして
コライダつきのオブジェクトを移動する場合、
つまり物理挙動と相互作用のある場合は
Translate または Rotate を使用すべきでは
ありません。
その代わりに Physics 関数を使用すべきです。
この使い方は別のセクションでみていきます。
Transform に影響を与えてよいときというのは
Kinematic である Rigidbody である場合
だけです。