【发布时间】:2025-12-06 05:30:01
【问题描述】:
目前我正在开发一款联网的 2d 平台游戏。
我的播放器是一个空对象,它充当我的实际图形等的父对象。空对象附加了一个rigidbody (3d),因为它需要一个才能使用configurable joint 组件(注意:我使用这个 3d 刚体移动我的玩家)。然而,玩家身体,图形的孩子,有一个box collider 2d 附加到它,因为它毕竟是一个 2d 游戏并且必须与其他 2d 对象发生碰撞。
我的平台附有polygon collider 2ds(如果值得一提,它连接到平台效应器)。
现在,即使我的播放器主体(它是图形的子对象,也是我的播放器对象的子对象)和我的平台上都有 2d colliders,但它们不会发生碰撞并且可以简单地相互进入(两者都不是)它们被标记为isTrigger)。
为了解决这个问题,我想我会在播放器主体中添加一个rigidbody 2D,看看它是否会做任何事情。现在在添加rigidbody 2D 后,碰撞确实有效,但是一旦我制作了rigidbody 2D,所有位置和旋转约束都已勾选,或者一旦我制作了kinematic 或static,它就会停止与我的平台发生碰撞。问题是我需要将rigidbody 2D 设置为static 或者不能移动,因为我目前正在使用附加的rigidbody (3d) 移动我的玩家对象,并且不希望在碰撞时玩家身体有任何额外的移动与对象。
我知道这是相当多的信息,所以如果您有任何问题或想了解更多信息,请发表评论,我会尽快回复。谢谢你:-)!
编辑:
2d 射线投射也无法击中玩家身体box collider 2D
编辑 2: 回顾一下:
如果玩家身体或平台有一个rigidbody 2d,它不是静态的(动态的)并且可以移动碰撞工作。然而,目前我的播放器主体上只有一个rigidbody 2D,它必须是静态的(如前所述)以及一个box collider 2d。另一方面,我的平台目前只有polygon collider 2d,因为我不明白为什么它需要rigidbody 2D。
【问题讨论】:
-
由于这个问题与其说是关于 C#,不如说是关于 Unity,你可能想在 gamedev.stackexchange.com 上试一试
-
是的,我会尝试......虽然这个问题对于编码人员来说非常独特,我认为这也是 Stack Overflow 的一个合适的问题。 @TimothyGroote
-
为了确定,你能总结一下你的两个对象(平台和玩家身体)中的每一个是否有刚体/是静态的/在不碰撞时是运动的吗?跨度>
-
可以@Isuka
-
你去@Isuka
标签: c# unity3d collision-detection rigid-bodies