手把手教你用Unity打造3D贪吃蛇:从零到上手的完整指南
还记得小时候玩诺基亚手机里的贪吃蛇吗?今天咱们不用像素点,改用Unity做个会扭腰摆臀的3D版本!准备好你的咖啡,咱们边喝边造这条"贪吃蟒"。
开工前的准备
打开Unity Hub新建项目时,记得在模板里选3D Core。项目名可以叫"Snake3D_Pro",毕竟咱们要做专业版嘛。创建完先别急着写代码,把场景里默认的Main Camera调个俯视角度,像这样:
- Position设置为(0,15,-10)
- Rotation调成(45,0,0)
给贪吃蛇安个家
在Hierarchy面板右键创建3D Object -> Plane,缩放成(20,1,20)当地板。材质球可以选个草皮纹理,记得在Inspector里勾选Generate Collider,后面碰撞检测就靠它了。
游戏对象 | 建议缩放 | 碰撞器类型 |
蛇头 | (0.8,0.8,1.2) | Capsule |
食物 | (0.5,0.5,0.5) | Sphere |
让蛇动起来
新建C脚本SnakeMovement,核心代码其实就三句话:
- transform.Translate(Vector3.forward speed Time.deltaTime);
- 用Input.GetKey检测方向键
- Quaternion.LookRotation处理蛇头转向
记得给蛇头挂载刚体和碰撞器,刚体的Use Gravity要取消勾选,不然你的蛇会直接掉出地图!
贪吃蛇的"自助餐"系统
食物的生成逻辑特别有意思:
void SpawnFood {Vector3 randomPos = new Vector3(Random.Range(-9,9),0.5f,Random.Range(-9,9));Instantiate(foodPrefab, randomPos, Quaternion.identity);
碰撞检测用OnTriggerEnter搞定,记得给食物tag设成"Food",检测到碰撞就销毁食物,同时给蛇身增加新的关节。
给游戏加点"命"
想让蛇吃到5个食物就多一条命?在计分器里加个判断:
- 声明public int lifeCounter = 1
- 每次得分后检查if(score % 5 == 0)
- Instantiate新建蛇身预制体
新生成的蛇身要自动跟随头部移动,可以用链表存储所有关节的位置信息,每帧更新时从尾部开始逐个传递坐标。
操作界面这样搞
在Canvas里拖入方向按钮,绑定点击事件:
按钮名称 | 绑定方法 | 参数示例 |
UpButton | OnDirectionClick | Vector3.forward |
LeftButton | OnDirectionClick | Vector3.left |
记得在PlayerSettings里设置横屏模式,手机玩家才玩得顺手。虚拟摇杆插件可以试试Joystick Pack,Asset Store里免费的那个就够用。
调试时的救命技巧
当蛇突然抽风乱窜时,先检查这三点:
- 刚体有没有意外开启重力
- 转向时的四元数计算是否正确
- 蛇身跟随逻辑是否漏掉了某节关节
可以在Update里用Debug.DrawRay画运动轨迹,红色射线代表当前方向,蓝色显示下一个转向目标点,调试起来特别直观。
最后打包APK前,记得在Quality Settings里把抗锯齿开到x4,这样蛇鳞纹理看起来更顺滑。测试时找个旧手机试试帧率,如果卡顿就把碰撞检测改成每两帧检测一次。
窗外的天色不知不觉暗了下来,屏幕里那条闪着金属光泽的机械蛇正在自如地游走。保存工程时,不妨给自己泡杯新咖啡——下次或许可以试试给蛇加上喷射加速的功能?不过那是另一个故事了...