下载 App
GameJam开发日志02
修改于10/206 浏览综合
大家好!这里是《猫猫盗墓贼》的第二篇开发日志!这次想从程序的角度,聊聊猫猫的动作是怎么一步步实现的。
在这次 Game Jam 中,我们使用有限状态机(FSM)管理角色行为。每个动作都有独立的状态和逻辑,后续添加新动作时,只需要编写对应的状态并处理好切换条件,不需要大幅修改原有代码,扩展起来方便了不少。
在角色操作方面,猫猫支持八方向移动,转身时会逐渐旋转到目标方向,而不是瞬间改变朝向,因此跑动时会带有一定的弧线。跳跃的初速度则是根据目标高度反推得到的,这样后续调整重力时,也能比较方便地控制跳跃高度。另外还加入了 0.1 秒的土狼时间(Coyote Time),即角色刚刚离开平台边缘时依然可以起跳,减少玩家明明按下跳跃却没有反应的情况。
冲刺的实现稍微复杂一些。猫猫会沿着一条抛物线向前冲刺,在起步前先检测整条轨迹以及目标落点。如果前方有可以落脚的平台,角色就会沿着轨迹移动并落在对应位置;如果前方是悬崖,或者途中会撞到天花板、横梁,冲刺就会被阻止。这个动作花了不少时间调试,不过做出来之后,光是控制一只白模猫猫跑跑跳跳就已经挺好玩了(bushi)。
攀爬方面,角色靠近梯子后按 E 就可以开始攀爬,并且会保留原本的横向位置,不会突然被吸附到梯子中央。爬到顶端或者向下爬到地面时,角色会自动退出攀爬状态。从高平台进入梯子时还额外做了一段过渡动作,猫猫会先绕着一个支点翻转半圈,移动到梯子外侧后再开始攀爬,避免直接卡进梯子内部。
钻缝和挖墙则是另外两种场景交互。进入缝隙后,猫猫会暂时隐藏在其中,再次按 E 时,如果缝隙另一端连接着其他房间,就会直接穿过去;如果是死胡同,则会从原路退出。挖墙则需要面向可挖掘的墙壁按 E,随后播放挠墙动画,墙壁会在猫爪击中的那一帧消失。这里使用了动画事件来同步动作和实际效果,避免出现动画还没播放完,墙就提前消失的情况。
由于这些交互都使用 E 键,所以还设置了简单的优先级,目前按照梯子、可挖掘墙壁、缝隙的顺序进行判断,避免多个交互对象同时存在时产生冲突。
这几天调试下来,Unity 的 Scene 视图已经快被各种颜色的 Gizmos 填满了。黄色球体表示交互范围,洋红色球体用于检测梯子,一排竖线负责检测冲刺落点,其中绿色表示可以落脚,红色表示前方是悬崖,另外还有用于预览冲刺轨迹的抛物线。这些辅助线虽然看起来有些杂乱,但调试时确实非常方便,很多问题都能直接通过它们找到原因。
目前角色的基础行为已经初步完成,不过还有不少内容需要继续完善。比如第三人称摄像机还没有正式接入,现在的移动方向仍然相对于世界坐标;跳跃缓冲、按键重绑定等功能也还在计划中,另外还有许多细节需要慢慢打磨。
总的来说,这几天最大的成果就是让一只原本只能站着的白模猫猫逐渐拥有了各种动作。虽然距离最终想要的效果还有一段距离,但至少现在已经能在白盒场景里到处折腾了。后续也会继续记录这些功能的开发和迭代过程。












