记学习Unity后第五次做游戏
离上一次更新有一个月了…偷懒了偷懒了(出现了拖更怪!)本来工程量也不大三天就能写完的,被bug折磨地不想写,于是就一直拖更…第一天写一半,第二天再找半天感觉,第三天还得找半天感觉(本人无疑)好了进正题吧。
在此先声明,本素材是由siki学院处取得的,无商业用途,仅学习使用。
这次,好吧又是初级游戏…而且又没做分辨率适配,默认全屏1920*1080;而且蛇头蛇身连接处处理的不恰当,开局默认两个蛇身且没有碰撞体,所以就是开局除了撞墙不会死亡…吃过一个食物才会撞自己死亡;快速按键可以回头撞自己…缓慢的话就不会了,这些BUG我慢慢解决,这回先这样了,动手能力强的也可以解决下,那就废话不多说,开始教程了。
首先有两个场景,一个开始界面,一个游戏场景。开始界面有一个开始游戏Button
,两个Toggle Group
分别存放模式和皮肤,两个Text
存放最高分和最大长度,其他的背景什么的随便丢丢上去就好了(注定不会做UI的我)皮肤先开始用Sprite Render
展示的,突然发现设置Pivot
不管用,于是先设置了Order in Layer
的顺序来展示了…但是后面找到设置Pivot
为啥没用了,在Edit=>Project Settings=>Graphics=>Camera Settings=>排序模式设置为透视就好了
,设置为自定义的话x,y,z没法设置,感觉就只能设置成这样了,哦对了Toggle
设置单选需要在两个Toggle
上面设置空的父物体,然后加个组件叫Toggle Group
就行了,然后把两个Toggle
的Group
设置为父物体就能实现单选了。开始游戏按钮需要绑定一个事件,手动绑自动绑都行,手动绑就加个函数绑就行了;自动的话onclick事件上面添加委托,直接lambda表达式就搞定了,就像这样:button.onClick.AddListener(() => SceneManager.LoadScene(1));
其他玩家选项和分数的控制的储存一会儿一起说。
然后游戏场景,开始了漫长的数格子过程…我这里决定的是食物和蛇都是占两个格子的,但是都可以一格一格的挪动,所以先把蛇头设置为2*2格开始找四个角的边界记录下来,然后移动两格开始找两步的长度。开始我设置的边界离真实的边界有一格距离,步长为两格,后来发现无尽模式没办法好好的传送到另一边,所以又改了一格一格的挪,边界也改成现在这样了。开始的时候找步长还找了大半天…找了最小公倍数,还一格一格算了有多少格,结果发现走弯路了,根本就不用找…按照我上面说的方法一下就完事了。
记录完以后,就可以自己写个移动方法来测试了,先写个全局变量moveVec2
储存每次按键过后的方向,timer
计时,然后计时结束以后移动长度为一格步长。
if (h != 0 && moveVec2.x != -h)//水平轴有偏移且正在移动的方向与偏移方向不相同,就是禁止180°转头 一涉及到逻辑就开始歇菜了o_o智商明显不在线
{
moveVec2.x = h;//更换移动方向
moveVec2.y = 0;
if (h > 0)//设置旋转角实现转头
transform.eulerAngles = new Vector3(0, 0, -90);
else
transform.eulerAngles = new Vector3(0, 0, 90);
}
else if (v != 0 && moveVec2.y != -v)//和上面一样的,不写注释了
{
moveVec2.y = v;
moveVec2