跑酷游戏项目总结
项目结构
- 角色:实现了基础四向移动操作,跳跃操作,死亡状态并加上了对应的动画。跳跃的逻辑使用状态机:初始状态 -- 有向上速度 and 当前在地面上 --> 起跳状态 -- 不在地面上 --> 空中悬浮状态 -- z轴速度为零 and 在地面上 --> 落地动作状态 -- 有向上速度 or 有平面移动速度 --> 初始状态。
- 游戏模式:主要实现了角色死亡后重生的逻辑。当玩家死亡时,先获取最新的检查点位置,在此位置上生成新的角色,然后使用获取玩家控制器节点和控制节点,让新建的角色蓝图成功读取到玩家的输入。
- 场景机关:场景机关主要有五种,摆锤、上下移动的双栏杆、底座为圆盘的旋转木杆、左右移动的木棍、蹦床。实现逻辑时,使用最多的节点是时间轴节点,可以通过在轨道上插入关键帧对组件的位置进行线性插值,也可以循环播放。圆盘机关有两种类型,一种带刺,可以致命;另一种只会击飞角色。两者差距只有木杆上面带不带刺,所以两种机关实际上是一张蓝图,通过设置变量来控制刺的可见性,这样就实现了蓝图的高效复用。
- 检查点:碰撞箱,当角色与其发生碰撞时,就把检查点的位置发送给游戏模式中的重生事件。
- 烟花特效:使用碰撞箱控制播放。初始为不可见状态,当角色与其碰撞时,通过遍历特效数组将其设置为可见状态。
遇到的问题及解决方法
- 制作蹦床的效果时:发现当我走上去时,蹦床的效果是正常的,会把我弹飞,但当我跳上去时,只能弹起来一点点。经过测试和思考,发现应该是速度相互抵消的问题。当跳上去时,角色有一个向下的速度,这时蹦床给角色向上的速度就会被抵消掉一部分,导致效果砍半。只需要去弹射角色节点,勾选
ZOverride,就能在角色落到蹦床上时,忽略角色向下的速度,强制赋成我们设置的速度。 - 在碰到检查点之前,每次角色重生时,都是面朝左边:一开始以为是角色死亡时的朝向被读取到了重生设置里,但是测试后发现每次死亡重生都是面朝左。后来发现是地图作者在设置出生点时,为了一出生时面朝前,把玩家胶囊体向右旋转了90°,但新的角色出生时使用的不是他一开始的胶囊体,所以默认就朝向左了。只需要在重生节点获取重生位置时,把初始值的z轴旋转90°即可。
- 左右移动的陷阱:一开始从中间向一边移动,到头之后直接跳变回来。这个问题其实并没有找到具体原因,只知道是时间轴的问题。我反复检查了时间轴但找不到问题,最后没办法了删除了那条轨道重新做了一个一样的,结果竟然神奇的解决了,非常的离奇,只能把它解释为引擎的小bug了。
这个小项目总体不难,但足够让人熟悉UE蓝图的游戏开发过程,从动画到逻辑都能跑一遍,也形成了一些肌肉记忆,感觉还是不错的。