贪吃蛇U3D实现笔记

贪吃蛇U3D实现笔记

先构建初始面板start

贪吃蛇U3D实现笔记_第1张图片贪吃蛇U3D实现笔记_第2张图片 1. 整个界面分为两块,左边菜单栏,右边游戏区
2. 在canvas画布上搭建两部分,在菜单控制面板,搭建皮肤选择模块,模式选择模块以及分数显示模块
3. 设置游戏开始按钮监听事件,跳转游戏场景,在游戏开始场景上创建gameobject,挂载控制脚本,控制脚本内依次放入UI控件
贪吃蛇U3D实现笔记_第3张图片
4. 在控制脚本里面编写点击事件用来改变控制面板焦点以及传递参数给session,点击跳转游戏场景game

游戏场景逻辑

左边依然为控制菜单,右边为游戏区域,依次放入对应UI
贪吃蛇游戏逻辑

  1. 键盘输入信号,控制蛇头图片上下左右移动,蛇头作为单独的脚本拿出来。
  2. 蛇身实现方式,蛇身作为预制体,每吃一个食物,new出一个蛇身,挂在尾部
  3. 食物作为一个容器,每次new出一个,吃掉一个再加一个

各脚本实现功能顺序

蛇头脚本实现功能

  1. 蛇头创建初始状态,构建一个食物容器,用来生成食物,记录蛇头图片步伐以及移动坐标,完成上下左右移动以及穿墙后坐标问题,通过在蛇头添加InvokeRepeating方法实现移动。蛇头移动封装成一个方法Move,InvokeRepeating重复调用Move方法来实现蛇头移动。添加2D触碰检测,在地图四周放置隐形gameobject,设置tag为墙,当触碰到时,在OnTriggerEnter2D方法里执行die方法或者改变蛇头坐标实现穿墙。
  2. 蛇身长度模块,封装在Grow方法中,在蛇头每次碰撞到食物后调用,实例化一个gameobject,添加到蛇身List中。
  3. 蛇身随蛇头移动封装在蛇头移动的Move方法中,判断蛇身List,反向赋值蛇身坐标。

食物脚本实现功能

食物随机在游戏地图上产生,设置tag为食物,在蛇头OnTriggerEnter2D碰撞到tag时,检测是否为奖励,普通食物,在触碰后销毁食物,蛇的身体涨一格,更新控制面板分数,分数记录在控制面板的UI上,播放食物被吃掉的声音。检测食物容器里面食物个数,以判断是否生成奖励或者普通食物。同理碰撞到奖励物体时,执行成长方法,销毁奖励,更新面板,播放声音。

控制面板实现功能

菜单面板挂上MainUIController脚本,在页面初始化开始后,依据勾选模式判定有无边界,对应增加游戏难度模块,分数模块、暂停和回到首页选项。

资源以及源码链接(点我)

你可能感兴趣的:(U3D,游戏)