Unity入门官方案例---2D Roguelike

介绍一下接触到的好的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。

       移动端就是通过中间变量进行大小比较后再来赋值。

猜你喜欢

转载自blog.csdn.net/Yao_2333/article/details/81906612
今日推荐