Menu
CoddyTech

エサ

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からボードのサイズを読み取ります。

challenge icon

チャレンジ

中級

ボード上のランダムなマスに食べ物を置きます。

  1. GameManagerに、public Snake snake;、public GameObject foodPrefab;、private Transform food;を追加します(シーンで最初の2つをリンクします)。
  2. Start()で、food = Instantiate(foodPrefab).transform;を実行し、続けてMoveFood()を呼び出します。
  3. void MoveFood():食べ物をランダムなx座標とz座標に置きます。それぞれの座標は-snake.edgeからsnake.edgeまでの範囲で、y座標は0です。

「プレイ」を押すと、赤い球体がマスに置かれます。置かれる場所は毎回変わります。次に「確認」を押します。

自分で試してみよう

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // ゲームを管理する:食べ物、スコア、ゲームオーバーを扱う。Chapter 2 で中身を実装する。
}

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

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