Unity编程设计 —— 如何处理第三人称角色移动
首先,要解决最基本的移动方案,因为是自己设计。所以不使用已经封装好的组件。在2D项目和3D项目中我进行了不同的尝试。毫无疑问3D项目对物理反馈的精准度要求更高,以人力去处理碰撞问题很不现实。所以移动的选择上非常需要用刚体自带的物理算法去解决移动反馈。通常来说是以rigdbody.MovePosition()方法去设置移动位置。这样unity自带的物理系统就会处理碰撞效果和摩擦力。而2D项目因为维度的降低,以人力去处理移动反馈可行度大幅上升。在修狗项目的制作中我在人物四周放置了四个trigger来检测移动的可行性,倘若trigger检测到有碰撞的墙体则可以进行额外处理,例如帮玩家找个方向慢慢蹭过墙体、进行碰撞回弹等等。比起直接使用刚体进行移动会更具拓展性。当然3D项目使用刚体移动的话也可以以复合形式处理。但是因为耦合性的缘故要修复的bug也会变多。
其次解决人物的模型展示效果。首先要注意一点就是角色的位置也就是刚体要和模型分离,位置管位置模型管模型,否则很容易乱套。因此模型都是在player子级下进行自管理的。主要管理的是模型的展示以及旋转。这里又要提到一个问题就是朝向的丝滑处理。主要使用的就是lerp的方法。在进行移动指令后在update中对模型的朝向进行lerp,就可以让角色以过渡的形式改变朝向。
最后是摄像机的处理,通常来说是要让相机俯视角色上方的一个固定坐标,具体什么位置还是实战调节比较好。值得一谈的是有时需要避免相机穿过墙体的问题,则需要给相机也设置碰撞,在stay的时候逐渐降低和描点间的距离直至归0。
浙公网安备 33010602011771号