关于模仿原神移动系统的问题

1.浮动胶囊

可以看到我们胶囊体不会连接到脚部,这样是为了解决斜坡问题,但是相对的会导致陷入地面,通过调节胶囊体的中心和高度,为了让角色能到达一定高度,我们需要给胶囊体一个向上的力来解决这个问题。

2.分层状态机

对角色的状态进行分层可以比较好的管理代码和动画等,代码设计思路合理使用抽象方法和虚方法等对各项行为进行分类和实现,类似于工厂模式,对代码的解耦有一定好处。可以考虑采用原型模式+工厂模式的方法对多角色就行克隆应该是个不错的选择。

3.相机的水平轴重定位

项目采取的是virtual cinemachine作为相机实现的功能。如果想人物没有镜头操作时不让他无休止的往一个方向移动,可以考虑采用这个方案。

4.总结

1.浮动胶囊不一定是最好的方案,可以考虑一下ik,毕竟现在人形模型可能会比较多,同样能解决左右手,和左右脚的问题,而且不需要为此匹配2个动作动画,相对斜坡问题可能就要采用一下判断法线方向的思路去解决问题。

2.分层状态机虽然较大程度解决了普通状态机的繁琐问题但是对于ai的支持还是比较弱的,如果到时候添加战斗技能,buff,剧情动作等等起来会越来越麻烦,可能使用行为树对那些很复杂的角色行为项目来说是比较优解,我目前参与的项目多数不管玩家本身或者怪物都有自动的功能或者逻辑一般采用可视化行为树给策划编辑相对来说更方便实现,但是我也发现了问题,实现了各种行为节点,但是要合理的匹配各种顺序和行为其实是需要下功夫的,比如何时操作完进行转向或者何时抬手或者打断都需要程序有敏感的认知,不然会导致动作僵硬等问题。

3.动画管理器采用playable可能会更好,它不会有庞大的、蜘蛛网一般的状态机。如果只是单纯播放动画的话,可能几句话就够了,如果是大型的RPG或FPS游戏,我们也没必要把大量的动画都添加到Graph中,我们可以预先创建好需要的子树,然后根据需要在添加到Graph中。动画状态机是不允许运行时添加、删除动画的,它只能使用OverrideController来替换动画。这其实在开发中时是不太方便的。因为当动画数量非常多的时候,我们又没办法在运行时添加、删除State,这往往造成会生成一个巨大的状态机来满足所有可能的状态,而这个巨大的状态机维护起来是十分麻烦的。在Animator状态机中,是通过定义变量来间接控制权重的。而在Playable中,你可以直接控制动画的权重和时间。例如:我们可以让二个动画按0.2和0.8的权重混合。Playable的这种方式是更加灵活的,但是相对的它对于普通开发者实际上是没有Animator parameter方便的。

4.cinemachine是一个不错的插件,不过得比较熟悉源码和api,不过我并没有时间去仔细阅读过源码,但是光看文档使用api就能做出不错的效果,很期待后面准备做剧情动画和过场动画中轨道相机的效果,不过大牛们都喜欢自己实现这些功能,毕竟自己写的才得心应手,目前我参与的项目也是使用公共插件的还是比较少,都是自己实现居多。下面对Cinemachine的讲解比较详细

【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)_cinemachine教程-优快云博客

https://github.com/Wafflus/unity-genshin-impact-movement-system/tree/master/Assets/GenshinImpactMovementSystem

这是一个基于原神移动系统的实现,采用的分层状态机去实现。

https://github.com/Sheng0528/xlua2023

这是我的代码仓库,后面的开发和学习可能都会在这个代码仓库下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值