エサ
Coddyの「Unityゲーム:3Dスネーク」コースのレッスン 5/14。
食べ物はランダムなマスに置かれます。マスの座標は整数なので、Random.Rangeのint版を使ってxとzを選びます。intでは最大値は含まれません。Random.Range(1, 7)なら、1から6までのサイコロを振ります。ある数を含めるには、その数より1大きい値を指定します。floatでは3.62のような数が返され、マスの中央にはなりません。
辺の長さが4のボードでは、列は-4から4までです。
int x = Random.Range(-4, 5); // -4から4までボード上には一度に1つの食べ物だけがあるため、ゲームではStart()で一度だけ作成し、新しい場所が必要になるたびに移動させます。GameManagerは、snakeフィールドを通じて、ヘビのedgeからボードのサイズを読み取ります。
チャレンジ
中級ボード上のランダムなマスに食べ物を置きます。
GameManagerに、public Snake snake;、public GameObject foodPrefab;、private Transform food;を追加します(シーンで最初の2つをリンクします)。Start()で、food = Instantiate(foodPrefab).transform;を実行し、続けてMoveFood()を呼び出します。void MoveFood():食べ物をランダムなx座標とz座標に置きます。それぞれの座標は-snake.edgeからsnake.edgeまでの範囲で、y座標は0です。
「プレイ」を押すと、赤い球体がマスに置かれます。置かれる場所は毎回変わります。次に「確認」を押します。
自分で試してみよう
using UnityEngine;
public class GameManager : MonoBehaviour
{
// ゲームを管理する:食べ物、スコア、ゲームオーバーを扱う。Chapter 2 で中身を実装する。
}
Unityゲーム:3Dスネークのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド