Ragdoll Mecanim Mixer问题

我是一名游戏策划,我按照https://blog.csdn.net/oKaiGuo/article/details/126183322这个文章配置了布娃娃效果,但是不生效,有几个问题请教。
【1】我在unity的redirector中不知道怎么添加hit controller脚本,想请教一下详细步骤。

img

     Redirector(Script
 Scrpl                       Redirectof
 FighterController                       NoneFighterController
 Enemy Controller                       NoneEnemyController
 HitControllef                       NoneHitController
 RamecanMixer                       #m10420_skin(RamecanMixer

【2】官方示例中模型的rig为humanoid,我用的是generatic,请问这个模型怎么配置

img


【3】我骨骼绑定都是按照教程绑定的,但是动不起来,运行时各个部位的坐标会变成一个点乱飞。

img

img

希望您能看到并帮助我解决问题adrian147369是我卫星hao,会更方便沟通,也方便额外感谢您的帮忙。

引用 皆我百晓生 小程序回复内容作答:
你好!对于你的问题,我会尽力帮助你。不过我在文本聊天环境下无法查看和编辑图片。我将会根据你的描述尽量给出解决方案,请注意我的回答可能会比较抽象。

  1. 添加 Hit Controller 脚本:在 Unity 中添加脚本的步骤通常是在指定对象上单击右键,选择 "Create Empty" 或 "Create Empty Child" 来创建一个空对象,然后将脚本拖拽到该对象上。请确保你正确地按照教程中的步骤进行操作,将 Hit Controller 脚本添加到 Redirector 的正确位置。

  2. 配置 generatic 模型为 Ragdoll:在 Unity 中,如果你使用的是 generatic 模型而不是 humanoid 模型,你需要手动进行一些配置。你需要为模型添加 Rigidbody 组件和 Collider 组件,并将它们连接起来以构建布娃娃效果。具体的步骤可能因你的模型和游戏需求而有所不同,请参考 Unity 的文档或其他相关教程进行准确的配置。

  3. 骨骼绑定导致的问题:骨骼绑定时的坐标错乱可能是由于骨骼和绑定点之间的不一致造成的。请确保你正确地绑定了骨骼,并且每个绑定点都与对应的骨骼连接。还要检查一下骨骼的旋转、缩放和位置是否设置正确,确保它们在运行时不会导致异常移动。

如果你需要进一步的帮助,请提供更多的细节和描述,这样我就能更好地理解你的问题并提供相应的解决方案。

结合GPT给出回答如下请题主参考
你好,作为一个机器人专业回答你的问题:

  1. 首先,请确保你已经按照文章中的步骤,正确地配置好了Ragdoll和Mecanim,并且在场景中放置了Ragdoll和Animator组件。

  2. 如果你已经正确配置了Ragdoll和Mecanim,但是效果不生效,可能是因为你没有正确地设置动画或者状态机。请确保你在状态机中正确地设置了Ragdoll和非Ragdoll状态,并且使用正确的过渡条件。

  3. 如果你已经正确地设置了动画和状态机,并且仍然无法生效,可能是因为你没有正确地设置Rigidbody和Collider组件。请确保你在Rigidbody和Collider中正确地设置了质量、重心和碰撞体积等参数。

希望以上信息对你有所帮助!如果还有其他问题,请随时提出。

一般来说,如果你的模型不是humanoid体型,你需要使用其他方式来配置骨骼绑定。

关于骨骼绑定运行时各个部位的坐标会变成一个点乱飞的问题,这可能是因为你的绑定设置出现了错误。你需要确保你的骨骼和模型是正确对齐的,并且在绑定过程中没有出现错误。

回答引用ChatGPT,希望对题主有所帮助:


首先,HitController是自定义的脚本,需要先将其添加到工程中。接下来,您可以按照以下步骤将HitController脚本绑定到Redirector上:

  1. 在Unity场景中,选中Redirector对象。

  2. Inspector窗口中,展开Redirector组件的Advanced Settings设置。

  3. Advanced Settings中找到Hit Controller选项,并点击其右侧的circle按钮。

  4. 在弹出的面板中,将Hit Controller设置为您添加的HitController组件。

  5. 点击Apply按钮,保存设置。

现在,您应该已经成功将HitController组件绑定到Redirector上了。接下来,您可以按照您的需求配置HitController组件,以实现您想要的布娃娃效果。

参考gpt

【1】在Unity的Redirector中添加Hit Controller脚本的步骤如下:

  1. 在Unity编辑器中,找到你的Redirector游戏对象。
  2. 在Inspector面板中,展开Redirector对象的组件列表。
  3. 找到HitController组件,并将其拖放到Redirector对象上。
  4. 确保你已经正确配置了HitController组件的属性和参数,以满足你的需求。

【2】如果你的模型的rig为generic而不是humanoid,你需要进行以下配置:

  1. 选择你的模型对象。
  2. 在Inspector面板中,找到模型的Animator组件。
  3. 在Animator组件的参数列表中,找到"Avatar Definition"部分。
  4. 将"Avatar Definition"的值设置为"Create From This Model"。
  5. 点击"Configure"按钮,进入Avatar配置界面。
  6. 在Avatar配置界面中,选择"Generic"作为Avatar的类型。
  7. 点击"Apply"按钮,保存配置。

【3】如果你的骨骼绑定后动作无法正常运行,可能有以下几个原因:

  1. 确保你的模型的骨骼绑定正确,每个骨骼都正确地与Mesh关联。
  2. 检查你的动画控制器和动画状态机是否正确设置,确保动画状态正确过渡和触发。
  3. 检查你的动画剪辑是否正确设置,并且在动画状态机中正确地使用。
  4. 确保你的动画剪辑的旋转和位移属性设置正确,以避免部位坐标乱飞的问题。

检查每个骨骼的权重绑定,确保它们正确地影响模型的各个部分,可以查看权重绑定的权重图以确保它们正确地分配了权重

如果你的模型使用的是Generic Avatar,需要在布娃娃配置中选择Generic来匹配你的模型。在布娃娃设置中,确保你的模型的Rig选项被设置为Generic,并且按照配置中的其他参数进行调整。这样,布娃娃系统将会与你的Generic模型匹配。

参考gpt4:
结合自己分析给你如下建议:
首先,您需要创建一个新的C#脚本,命名为HitController,并将其附加到您的角色控制器上。
然后,您需要在HitController脚本中编写以下代码,用于检测角色控制器与其他碰撞器的碰撞,并调用RagdollMixer组件的Hit方法:

using UnityEngine;

public class HitController : MonoBehaviour
{
    // Reference to the character controller component
    private CharacterController controller;

    // Reference to the ragdoll mixer component
    private RagdollMixer mixer;

    // Start is called before the first frame update
    void Start()
    {
        // Get the character controller component
        controller = GetComponent<CharacterController>();

        // Get the ragdoll mixer component
        mixer = GetComponent<RagdollMixer>();
    }

    // Update is called once per frame
    void Update()
    {
        // Nothing to do here
    }

    // This method is called when the character controller hits another collider
    void OnControllerColliderHit(ControllerColliderHit hit)
    {
        // Get the rigidbody of the collider that was hit
        Rigidbody body = hit.collider.attachedRigidbody;

        // If there is no rigidbody or it is kinematic, ignore it
        if (body == null || body.isKinematic)
        {
            return;
        }

        // Call the Hit method of the ragdoll mixer component, passing the hit information
        mixer.Hit(hit);
    }
}

最后,您需要在RagdollMixer组件的Inspector面板中设置一些参数,如力量、时间和阻尼。
这样,您就可以实现布娃娃效果了。希望这对您有所帮助。如果您还有其他问题,欢迎继续提问。

Unity布娃娃系统 Ragdoll Mecanim Mixer使用


Unity 布娃娃插件Ragdoll Mecanim Mixer入门使用介绍以及一些坑 1.入门使用主要两个脚本 RagdollConstructor 主要配置角色Ragdoll 的数据和每个关节的碰撞体RamecanMixer 对布娃娃系统物理效果的控制 相对比unity自带的布娃娃系统,他这个可以和动画系统很好的混合一起,前者则只能布娃娃/动画器二选一控制 2.使用 首… http://www.taodudu.cc/news/show-3408701.html

创建一个空文件,然后放代码进去

配置参数,然后添加