虚幻4实战 贪吃蛇制作

19 篇文章 4 订阅
14 篇文章 1 订阅

之前利用unity做过贪吃蛇,从思路、代码逻辑上来说,并没有什么难度。今天早上在公司就完成了,这里记录下。
效果图就是下面这样的。最后我按了与运动方向相反的按钮,这里我设置这样的操作也是死亡的。
这里写图片描述

一、 前期设置
贪吃蛇是2d游戏,没有玩家(pawn和character),所以这里要进行一些设置。
首先,把GameMode、PlayerController都替换掉,自己写MyMode和Mycontroller,在世界设置里,这里就不多说了,default pawn class选为none。
然后再向场景中拖入一个camera,作为游戏界面。为了实现2d效果,camera选为正交模式,如下。然后调整camera大小和方向即可。
这里写图片描述
场景大概这样就好了,蛇就在下面的面板上运动。
这里写图片描述
在关卡蓝图写如下代码,实现摄像机内容输出到屏幕。
这里写图片描述

二、蓝图类设置
需要设置head、snakepart、food三个类蓝图。head作为上面的黄色头部,snakepart是黄色头部后面跟随的身体,food是随机出现的食物。
head类蓝图设置如下,主要判断碰到food、碰到snakepart事件。head的控制写在playercontroller里。
这里写图片描述
snakepart、food蓝图不用写任何东西。
关于以上三个类蓝图actor的设置,大小、材质的这里不在赘述,自己多试试就好了。

三、Mycontroller蓝图
基本游戏的所有逻辑都在这里了。

首先是控制head的转向。这段逻辑相对独立,可以测试好再进行下面的工作。
这里写图片描述

然后tick事件,这里控制着整个游戏的流程。
这里写图片描述
简单的说下逻辑顺序吧。
delay是确保蛇的移动是跳跃式的,每隔moverate秒后蛇一次性移动蛇身体长度的位置。
然后UpdatePosition事件,储存当前head和所有snakepart的位置信息。
MoveHead事件,head移动到下一个位置。
AddBody事件,检测是否吃到food,是否要增加snakepart。
MoveBody事件,最后更新所有snakepart到新的位置,实现蛇身的移动。

UpdatePosition事件:
这里写图片描述
将head和所有snakepart位置信息储存到allposition数组。

MoveHead事件:
这里写图片描述
这里代码虽然不多,却是最重要的部分。原理就是不断给head增加世界位置偏移量,偏移量的方向是actor forward vector,大小move length是head的长度。

AddBody事件:
这里写图片描述
如果eatfood就spawn actor,增加身体snakepart,位置就是position数组的最后一个,并且在随机生成一个food(spawn food事件)。
spawn food事件:
这里写图片描述
随机在box内生成一个food即可。这里还有一个box蓝图类,继承自actor。关于这个的具体设置不在详细说了。

MoveBody事件:
这里写图片描述
这里也是重要逻辑。第一个位置的snakepart移动到蛇头位置,后面的每个snakepart移动到前一个snakepart的位置,而恰好我们的allposition数组就是这样按顺序储存了所有的位置信息,所以直接foreach语句即可。

最后的dead事件:
这里写图片描述
何时调用dead事件请拉回顶部….
至于这里的ui制作就不多说了,实在太简单了。

四、不足之处

这个游戏到这里已经算完美运行了,根据我长达一个小时的试玩,应该是没什么bug了。

不过,改善之处还是有不少地方的。
首先,food随机出现的位置不太理想。我们已经设置好蛇是跳跃式的移动,一格格的运动,但是我们的food却出现在了不是格子的地方。。。所以蛇头有时候只是与food擦肩而过。。。
然后,这里边界的死亡条件没有加入,这个算是比较简单了。

  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值