Menu
CoddyTech

ボード

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

このコースでは、3DのSnakeを作ります。上から見た15×15のボード上で、立方体でできたヘビを動かします。ヘビは1セルずつ移動し、矢印キーまたはWASDで曲がり、エサを食べて成長し、壁や自分のしっぽにぶつかると死にます。Snakeが頭を動かします。エサが登場するまでは、GameManagerは空のままです。「プレイ」でゲームを実行し、「確認」で採点します。

セルの幅は1単位で、座標は-7から7までの整数です。ヘビは滑らかに移動しません。一定の間隔で発生するtickごとに、セル1つ分だけ移動し、その間は静止します。この間隔はタイマーです。毎フレームTime.deltaTimeを加算し、間隔に達したら処理して、タイマーからその間隔を引きます。

timer += Time.deltaTime;
if (timer >= 0.5f)
{
    timer -= 0.5f;
    Step();
}

タイマーを0にする代わりに間隔を引くことで、超過したフレームの一部を保持できるため、移動が徐々に遅れていくのを防げます。数値ではなく、tickフィールドを使ってください。

challenge icon

チャレンジ

簡単

ティックごとに頭を1マス進めます。

  1. Snakeにprivate float timer;を追加します。
  2. Update()で、timerにTime.deltaTimeを加算します。timer >= tickになったら、timerからtickを引いてStep()を呼び出します。
  3. Step()で、transform.positionにdirectionを加算します。

「プレイ」を押すと、頭が右へ1マスずつ進み、今のところ盤面の外へ出ていきます。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // 2回の移動の間隔(秒)
    private Vector3 direction = Vector3.right;

    void Update()
    {
        // tick秒ごとにStep()を1回実行する
    }

    void Step()
    {
        // 頭をdirectionに沿って1マス動かす
    }
}

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

自分で練習してみよう: Unityプレイグラウンド