進行方向を変える
Coddyの「Unityゲーム:3Dスネーク」コースのレッスン 2/14。
ヘビは矢印キーまたはWASDで曲がります。カメラは盤面を手前の端から見下ろしているため、画面の上方向は +z、Vector3.forward に沿っており、下方向は Vector3.back です。Vector3.up は空を指します。頭をその方向に動かすと、盤面から浮き上がってしまいます。
曲がるのはキーを押したときに1回だけなので、wasPressedThisFrame でキーを読み取ります。キーを押しても変わるのは direction だけです。Step() は次のティックで、引き続き頭を動かします。
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
direction = Vector3.right;
}矢印キーとその文字キーは、|| でつなぐ2つのキーです。キーボードのないデバイスでは Keyboard.current が null になるため、最初に一度確認してください。
チャレンジ
簡単矢印キーまたはWASDキーでヘビを操作します。
Snakeにusing UnityEngine.InputSystem;を追加します。Update()の先頭でKeyboard.currentを読み取ります。上またはWキーでdirection = Vector3.forward、下またはSキーでVector3.back、左またはAキーでVector3.left、右またはDキーでVector3.rightを設定します。Step()はそのままにします。頭の向きは次のティックで変わります。
「プレイ」を押し、ゲームをクリックして操作します。頭の向きは次のステップで変わります。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // 2回のステップの間隔(秒)
private float timer;
private Vector3 direction = Vector3.right;
void Update()
{
timer += Time.deltaTime;
if (timer >= tick)
{
timer -= tick;
Step();
}
}
void Step()
{
transform.position += direction;
}
}
Unityゲーム:3Dスネークのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド