Menu
CoddyTech

進行方向を操作する

Coddyの「Unityゲーム:3Dスネーク」コースのレッスン 2/14。

ヘビは矢印キーまたはWASDで方向転換します。カメラはボードの手前の端から見下ろすため、画面上方向は+z、つまりVector3.forwardに沿い、下方向はVector3.backです。Vector3.upは空を指します。これで頭を動かすと、ボードから浮き上がってしまいます。

方向転換はキーを押すたびに1回行われるため、Input SystemのwasPressedThisFrameでキーを読み取ります。キーを押すとdirectionだけが変わります。次のティックでStep()が引き続き頭を動かすため、ヘビの動きのリズムは保たれます。Dを押したときに画面右方向へ進むローバーの例:

Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
    heading = Vector3.right;
}

キーボードではInput Systemに軸がありません。矢印キーと文字キーは別々のキーなので、||でつなぎます。キーボードがないデバイスではKeyboard.currentがnullになるため、最初に一度読み取り、チェックしてください。

challenge icon

チャレンジ

簡単
  1. Snakeにusing UnityEngine.InputSystem;を追加します。
  2. Update()の先頭でKeyboard.currentを読み取ります。上矢印キーまたはWキーを押すとdirectionがVector3.forwardに設定され、下矢印キーまたはSキーではVector3.backに、左矢印キーまたはAキーではVector3.leftに、右矢印キーまたはDキーではVector3.rightに設定されます。
  3. Step()はそのままにします。頭は次のティックで向きを変えます。

Playを押し、ゲームをクリックして操作してから、Checkを押します。

自分で試してみよう

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;
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityゲーム:3Dスネークのすべてのレッスン