斜め移動の速度
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 20/67。
右矢印キーと上矢印キーを同時に押すと、未加工の軸は方向 (1, 0, 1) を示します。その長さである .magnitude は 1 + 1 の平方根で、約 1.41 です。これを使って移動する歩行者は、まっすぐ進んで 1 単位進む時間で、斜めに 1.41 単位進みます。つまり 41% 速くなります。
.normalized は、同じ方向を向き、長さがちょうど 1 単位のベクトルのコピーを返します。(1, 0, 1) は約 (0.71, 0, 0.71) に、(0, 0, 5) は (0, 0, 1) になります。これに速度を掛けると、どの方向でもその速度で移動します。このミツバチは、花が遠くても近くても毎秒 2 単位で花に向かって飛びます。.normalized がなければ、花が遠いほど速く飛んでしまいます。
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized は (0, 0, 0) のままです。ゼロには方向がないためです。v.normalized は v をそのままに保ちますが、v.Normalize() は v 自体を変更します。
チャレンジ
簡単ウォーカーの移動を記述します。raw軸で読み取った矢印キー(またはWASD)で、x軸に沿って左右に、z軸に沿って前後に移動します。斜め方向も含め、どの方向にも毎秒speed単位で移動し、すぐに動き始めてすぐに止まり、キーを押していないときはその場にとどまります。
Playを押し、まっすぐ歩いたり斜めに歩いたりしてから、Checkを押します。
自分で試してみよう
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// 矢印キーまたはWASDキー:x軸とz軸に沿ってspeedで移動し、斜め方向でも同じ速度にする。
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。