c# - 角色在 Unity 中使用人形动画类型慢慢向上移动

标签 c# animation unity3d avatar avatars

我的初始项目中使用了一个海洋模型,它在运行时会不受控制地升离地面。我导入了fbx资源,将动画类型设置为humanoid并通过自动映射配置了头像,设置了一个只包含运行动画的动画 Controller 。这是播放后的几秒钟:

enter image description here

但是当使用通用动画类型时一切正常。在仍然使用头像系统的同时解决这个问题有什么建议吗?

更新:

配置我的 3D 模型: enter image description here

最佳答案

这显然是由根运动引起的。发生的情况是,动画的一个循环使角色略微升高。添加这些细微的变化,你得到你得到的。如果您不需要根运动(看起来不像您需要的那样),请将其禁用(从动画组件的设置中)。如果这样做,请编辑动画以确保它适合,或者禁用沿 Y 轴的根运动(您可以从动画的导入设置中执行此操作)。

如果您不知道什么是根运动,那就是当您的模型的根骨骼应用了动画时。您显然无法创建角色在关卡上下运行的整个动画,并且直到最近(虽然不是最近)动画就地动画并通过代码按程序移动的角色(我知道 Unreal Tournament 3 使用的事实这种方法,就像任何 UDK 用户一样)。然后,人们开始想知道如何让他们的角色移动得更逼真?我的意思是,这不像你以 4 公里/小时的恒定速度向前走,你倾向于在步行周期的不同部分减速和加速。使用称为根运动的技术,同样可以应用于视频游戏角色。

使用根运动,您实际上是在角色动画期间向前移动角色。这将导致动画在 max 或 maya 中看起来非常糟糕,因为角色将在循环后快速回到其原始位置。然而,这个数据在游戏引擎中被智能地使用:不是使用动画产生的绝对位置,而是在每两帧之间从中取出速度,并根据该速度移动角色(虚幻引擎实际上有一个非常巧妙的加速应用根运动的模式,虽然我不太确定这与速度模式有何不同)。这将使您的角色以与动画相同的速度向前移动,因此您实际上可以为角色的运动及其四肢和关节设置动画。此外,由于您使用的是速度而不是动画中的位置数据,因此它看起来与您期望的完全一样。如果您对这项技术感兴趣,请查看 Assets 商店中的 Mechanim 演示包。它广泛使用根运动来移动角色。

关于c# - 角色在 Unity 中使用人形动画类型慢慢向上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22241461/

相关文章:

javascript - Sprite 动画Javascript?

ios - Swift - RemoveAllAnimations() 在 UICollectionViewCell 类中不起作用

c# - 玩家相机瞄准/锁定另一个物体

c# - 可空非引用类型变量是否需要 new()?

c# - 将数据加载到动态填充的部分 View 中的选择下拉菜单

javascript - React Native 中心动画图标

c# - 击退敌人

c# - 根据从另一个组合框中选择的索引填充组合框

c# - nHibernate 在多个线程上枚举相同的集合

c# - 如何检测 child 碰撞其他碰撞器?