食物
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,以此获取棋盘大小。
挑战
中等把食物放在棋盘上的随机格子里。
- 在
GameManager中,添加public Snake snake;、public GameObject foodPrefab;和private Transform food;(场景会关联前两个)。 - 在
Start()中,写入food = Instantiate(foodPrefab).transform;,然后调用MoveFood()。 void MoveFood():将食物放在随机的 x 和 z 坐标上,两个坐标的范围都是从-snake.edge到snake.edge,y 为 0。
按下“开始”:一个红色球体会出现在某个格子上,每次出现的位置都不同。然后点击“检查”。
亲手试试
using UnityEngine;
public class GameManager : MonoBehaviour
{
// 管理游戏运行:食物、得分和游戏结束。第 2 章会补全这里的代码。
}
Unity 3D 贪吃蛇游戏中的所有课
自己练习: Unity 在线编辑器