目前我正在开发一个联网的2D平台游戏。
我的播放器是一个空对象,用作我实际图形的父对象等。空对象附加rigidbody (3d)
,因为它需要有一个configurable joint
才能使用box collider 2d
组件(注意:我使用这个3D僵硬的身体移动我的玩家)。然而,玩家身体,图形的孩子,有一个polygon collider 2d
附加到它,因为它毕竟是一个2D游戏,并且必须与其他2d对象。
我的平台附有2d colliders
个(如果值得一提,则连接到平台效应器)。
现在,即使我的玩家身体(我的玩家对象的孩子都是图形的孩子)和我的平台上都有isTrigger
,他们也不会发生冲突,只能互相攻击(它们都没有标记为rigidbody 2D
)。
为了解决这个问题,我想我会向玩家身体添加一个rigidbody 2D
,看看是否可以做任何事情。现在,添加rigidbody 2D
碰撞后确实有效,但只要我kinematic
选中了所有位置和旋转约束,或者只要我static
或rigidbody 2D
它会停止与我的平台发生碰撞。问题是我需要让static
成为rigidbody (3d)
或者无法移动,因为我正在使用附加到其上的box collider 2D
移动我的播放器对象,并且不希望任何其他移动玩家身体与物体碰撞时的情况。
我知道这是非常多的信息,所以如果您有任何问题或希望了解更多信息,我会尽快回复。谢谢: - )!
编辑:
2d射线投射也无法击中玩家身体rigidbody 2d
编辑2: 所以回顾一下:
如果玩家团体或平台的rigidbody 2D
不是静态的(动态的)并且可以移动碰撞。但是目前我的玩家身上只有box collider 2d
,但必须是静态的(如前所述)和polygon collider 2d
。另一方面,我的平台目前只有rigidbody 2D
,因为我不明白为什么需要var childElementsNum = $('#wrapper')[0].childElementCount;
var itemWidth = $('#containersimg').width()
var itemSize = $('#containersimg').width() + 10; //here we add the 5px margin to left and right
$('#wrapper').css("width", itemSize * childElementsNum + 'px');
$('.square').css("width", itemWidth + 'px');
。
答案 0 :(得分:1)
静止对撞机如果没有刚体,如果它是静止的或者如果它有一个运动刚体,则不会检测到与另一个对撞机的碰撞。您的两个对象中的至少一个不需要是静态的,并且具有不能正确检测到运动学的刚体。所以你需要在你的平台上添加一个Rigidbody2D。
如果您对碰撞器不会与另一个碰撞器发生碰撞有疑问,请始终参考Unity的文档this page,该文档总结了哪种碰撞器会与另一碰撞器发生碰撞。
答案 1 :(得分:0)
Rigidbody2D不能与Rigidbody3D发生碰撞,这里有一个解决方法
http://answers.unity3d.com/questions/580769/can-rigidbody-2d-collide-with-3d-colliders.html