Menu
CoddyTech

盤面

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

このコースでは、3DのSnakeを作ります。上から見た15×15の盤上に、立方体でできたヘビがいます。ヘビは1セルずつ移動し、矢印キーまたはWASDで方向転換し、エサを食べて成長し、壁または自分のしっぽにぶつかると死にます。これを動かすスクリプトは2つあります。頭に付けるSnakeと、次の章でエサが登場するまで空のままのGameManagerです。

セルの幅は1単位で、中心は整数の位置にあります。xとzは-7から7までで、すべてのセルはy 0にあります。ヘビはセルの間を滑るようには移動しません。0.15秒などの一定間隔で刻まれるティックごとに、セル1つ分移動し、その間は静止します。

Unityでの拍はタイマーです。毎フレームTime.deltaTimeを加算し、タイマーが間隔に達したら処理を実行して、その間隔分を差し引きます。このビーコンは1秒ごとに点滅します。

public Light beacon;
public float interval = 1f;
private float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        timer -= interval;
        beacon.enabled = !beacon.enabled;
    }
}

タイマーを0に戻すのではなく、間隔分を差し引くことで、間隔を超えたフレームの余りが保たれ、拍が遅れていくのを防げます。

challenge icon

チャレンジ

簡単

頭はセル (-3, 0, 0) 上にある緑色の立方体です。Snake には tick(0.15 秒)と direction(Vector3.right)があります。

  1. private float timer; を追加します。
  2. Update() で、Time.deltaTime だけタイマーを増やします。tick に達したら、タイマーから tick を引き、Step() を呼び出します。
  3. Step() で、頭を direction に沿って 1 セル移動させます。

プレイを押して、頭が右へ進むのを確認しましょう。今のところ頭は盤面の外へ出ます。壁が登場するのはレッスン 4 です。その後、チェックを押します。

自分で試してみよう

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マス移動する
    }
}
quiz icon腕試し

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

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