介绍一下接触到的好的Unity官方作品。
2D Roguelike
游戏简介:
该小游戏是2D类型,操作很简单,上下左右,每动一下消耗1点能量,能量通过吃到食物补充;场景中有墙阻挡,需要撞4下墙才会销毁,同时还要怪物追击,被追到会大量消耗能量。
小游戏同时设置了一个exit出口作为天数记录,每到达一次,就能刷新一下全图场景。
游戏制作介绍:
游戏制作也很简单,原材料就是一个PNG的照片,导入后进行切割,这里因为材料做得比较好,直接按grid分割就行。动画部分就是几张图片的切换所表现出来的。添加上音乐,效果还是蛮不错的。
一.单元分化
1.首先是背景无关部分:①外墙,②内部地板。
2.得分点部分:食物+汽水,过关Exit。
3.阻碍得分部分:需要撞击4下的栅栏。
4.追击伤害部分:两种不同形态的魔鬼。
5.主角部分。
二.规则
由于没有设置打击魔鬼的道具,暂时使用玩家走两局,魔鬼才能走一局的规则。
到达Exit后全图刷新重置。
通关越多,魔鬼数量越多。
三.制作对应的预制体&动画机
根据图片制作对应的动画,并制作预制体。
然后在脚本中使用随机的情况分配预制体,达到每一关都不一样的效果。
四.功能划分
写脚本的时候,需要知道每一个角色拥有什么功能:
1.魔鬼:跟踪主角,采用0.5的速度进行跟踪。
2.墙:阻止任何移动物体经过,包括主角和魔鬼。但是主角可以通过消耗能量来击碎墙。
3.食物:补充能量。不同食物补充能量点不同。
4.主角:上下左右单元格移动,每移动一次需要1能量点。受到伤害会掉能量点。
五.数值分配
整个场景采用8x8,食物的数量是在一定范围内波动,不会太少,也不会过多。随着通关数越多,能增加难度的点就是魔鬼的数量。
由于是2D游戏,移动步长又有限,可以把坐标当作步长使用。
六.脚本
把全图8x8作为一个集合,随机放入食物和魔鬼、墙等等。
这样主角每一步都是检测坐标的上下左右有什么东西。
而到魔鬼的运动,采取x、y离主角最近的方式走一步。
七.注意事项
官方案例中,每一个预制体的碰撞体都是偏移本身的坐标。因为实际坐标上,是以左上角为准点的。而脚本中又使用到射线检测,故需要把碰撞体移开,不然一开始,就碰到“左上”+“左边”的两个部分。
可以像官方一样使用碰撞体坐标偏移,或者在脚本检测MovingObject中的Move函数里面修改:
//Cast a line from start point to end point checking collision on blockingLayer.
hit = Physics2D.Linecast((start + new Vector2(0.5f, -0.5f)), (end + new Vector2(0.5f, -0.5f)), blockingLayer);
让坐标点偏移到位置中心来。
当然有另外的做法,由于每一步是上下左右4个位置中的一个,所以实际只需要检测这四个点就行。
此外,还要注意每次移动都是固定步长的,所以代码获取偏移量时应该进行处理:
Input.GetAxisRaw ;Raw不经过处理的,会直接返回-1,0,1。
移动端就是通过中间变量进行大小比较后再来赋值。