【问题标题】:Child Components with rigidbody具有刚体的子组件
【发布时间】:2019-08-01 23:27:40
【问题描述】:

上下文

我的项目中有两个元素。一个player(只是一个立方体)和一些eyewears

当眼镜未连接到播放器时,我希望它们具有Rigidbody 的属性。但是当眼镜附在玩家身上时,我希望它们是一个静态对象,这样玩家就可以处理碰撞和物理。

我试过了:

DestroyElement(rigidbody) 当玩家拿起眼镜时。当他离开他们时,我用AddComponent重新创建刚体

效果很好,但是将来会附加其他元素,它们将不会共享刚体的相同属性。我想也许我可以保存刚体实例,所以当玩家离开眼镜时,我将其分配给它们。我做不到。

AddComponent 不接受参数。


然后我尝试在我的玩家戴上眼镜时设置“运动模式”。进展不顺利,我的球员不能再跳了,有时他会在地板上出现故障。

我该如何解决这个问题?

【问题讨论】:

  • “Is Kinematic”在物理上应该像没有刚体的游戏对象一样工作。检查没有任何关节将眼镜用作连接体,并禁用眼镜的碰撞器。

标签: unity3d


【解决方案1】:

GameObject.AddComponent 确实接受参数或通用参数(首选):

go.AddComponent<RigidBody>();

这也是可能的,但已被弃用,因为您失去了类型安全性:

go.AddComponent(typeof(RigidBody));

但是,RigidBody 并不是要添加/删除的,在你的情况下,我会说 运动学模式 是要走的路......但我不知道你为什么遇到奇怪的结果。

【讨论】:

  • 感谢 Hugo 为我指明了正确的方向。正如您所建议的,我设法使用运动学模式使其工作。
【解决方案2】:

感谢 R Astra,我再次检查了眼镜碰撞并发现了问题。我启用了凸网格。

col 造成了麻烦,因为背面网格在播放器内部


所以,我很快就复制了那个眼镜并生成了一个新的网格。成功了!

非常感谢!

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 2014-08-08
    • 1970-01-01
    • 2022-07-06
    • 2020-01-16
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多