transform.Translateの移動方向(ローカル座標系、ワールド座標系)
目次
transform.Translateの動作
transform.Translate(Vp, t)
Vector3 Vp(x, y, z)の方向・距離へ移動します。
t省略時は「t = Space.Self」となります。
t = Space.Self:ローカル座標系を基準に移動します。
t = Space.World:ワールド座標系を基準に移動します。
transform.Translate(new Vector3(1,2,3),Space.World);
サンプル
デザイン
プリミティブオブジェクトのカプセルの作り方
エディターデザイン
コード
using UnityEngine;
public class TranslateSample : MonoBehaviour
{
void Update()
{
if (Input.GetKey(KeyCode.Alpha1))
{
transform.Translate(new Vector2(1, 0) * Time.deltaTime, Space.Self);
}
else if (Input.GetKey(KeyCode.Alpha2))
{
transform.Translate(new Vector2(1, 0) * Time.deltaTime, Space.World);
}
}
}
このUnityのスクリプトは、TranslateSample
という名前のコンポーネントを持つGameObjectに対して、キーボードの1キーまたは2キーが押されている間、オブジェクトを右に移動させる機能を提供します。具体的な動作は以下の通りです。
Update
メソッド: このメソッドは毎フレーム呼び出されます。Unityのゲームループにおいて、オブジェクトの状態更新や入力のチェックなど、フレームごとの処理を行う場所です。Input.GetKey(KeyCode.Alpha1)
:KeyCode.Alpha1
はキーボードの1キーを指します。Input.GetKey
メソッドは、指定されたキーが押されている間、true
を返します。つまり、この条件がtrue
の場合、1キーが押されている間に何かの処理を実行するということです。transform.Translate(new Vector2(1, 0) * Time.deltaTime, Space.Self)
: この命令は、GameObjectをローカル空間(自身の軸に沿って)において右に移動させます。new Vector2(1, 0)
はx軸に沿っての移動量を示し、Time.deltaTime
は前フレームからの経過時間で、この乗算によってフレームレートに依存しない移動量を保証します。Space.Self
は移動の基準となる空間をGameObject自身の空間としています。Input.GetKey(KeyCode.Alpha2)
: これはキーボードの2キーに対するチェックを行います。transform.Translate(new Vector2(1, 0) * Time.deltaTime, Space.World)
: この命令は、GameObjectをワールド空間(全体のシーンにおける共通の空間)において右に移動させます。ここでもnew Vector2(1, 0) * Time.deltaTime
で移動量を指定しており、Space.World
によって移動の基準がワールド空間に設定されています。
要するに、このスクリプトは1キーを押している間、オブジェクトをそのローカル空間で右に移動させ、2キーを押している間、オブジェクトをワールド空間で右に移動させます。これにより、オブジェクトの向きに依存するか、シーン全体の向きに依存するかの違いを観察できるようになっています。
ディスカッション
コメント一覧
まだ、コメントがありません