ボード
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フィールドを使ってください。
チャレンジ
簡単ティックごとに頭を1マス進めます。
Snakeにprivate float timer;を追加します。Update()で、timerにTime.deltaTimeを加算します。timer >= tickになったら、timerからtickを引いてStep()を呼び出します。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プレイグラウンド