Menu
CoddyTech

食物

Coddy Unity 3D 贪吃蛇游戏 课程的第 5 课,共 14 课。

食物会出现在随机的格子上。格子的坐标都是整数,所以要用 Random.Range 的 int 版本来选取 x 和 z。使用整数时,最大值不会包含在内:Random.Range(1, 7) 会掷出 1 到 6。要包含某个数字,就把它加 1 后作为最大值。使用浮点数时,它会返回 3.62 这样的数字,而不是格子的中心坐标。

边长为 4 的棋盘,其列的坐标范围是 -4 到 4:

int x = Random.Range(-4, 5);   // -4 到 4

棋盘上一次只能有一个食物,所以游戏会在 Start() 中创建它,并在需要新位置时移动它。GameManager 通过 snake 字段读取蛇的 edge,以此获取棋盘大小。

challenge icon

挑战

中等

把食物放在棋盘上的随机格子里。

  1. 在 GameManager 中,添加 public Snake snake;、public GameObject foodPrefab; 和 private Transform food;(场景会关联前两个)。
  2. 在 Start() 中,写入 food = Instantiate(foodPrefab).transform;,然后调用 MoveFood()。
  3. void MoveFood():将食物放在随机的 x 和 z 坐标上,两个坐标的范围都是从 -snake.edge 到 snake.edge,y 为 0。

按下“开始”:一个红色球体会出现在某个格子上,每次出现的位置都不同。然后点击“检查”。

亲手试试

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // 管理游戏运行:食物、得分和游戏结束。第 2 章会补全这里的代码。
}

Unity 3D 贪吃蛇游戏中的所有课

自己练习: Unity 在线编辑器