如果物体从地板上掉下来,这里是要检查的东西。
1。对撞机是否附加到该对象?如果没有,则将 Collider 或 Collider2D 附加到该对象。
2。是否在任何对象碰撞器上启用了 isTrigger?如果是,则在两个碰撞器上禁用 IsTrigger。
3。如果刚体附加到游戏对象,请确保玩家在点击“播放”之前 100% 高于地板,否则您会遇到更多问题。
4。游戏对象的大小可能很小。真的很小。在对象与另一个对象发生碰撞之前,对象的大小是有限制的。尝试调整对象的大小,然后将相机向后移动。
如果我为我的播放器禁用 isTrigger,那么它将无法运行
通过其他我需要它的对象,通过。
这根本不是问题。您可以使用图层来让 Unity 设置哪些碰撞器可以与另一个碰撞器发生碰撞。只需禁用 isTrigger 然后使用:
对于 2D:
Physics2D.IgnoreCollision(yourFirstCollider, yourOtherCollider, true);
或
Physics2D.IgnoreLayerCollision(yourLayer, yourOtherLayer, true)
对于 3D:
Physics.IgnoreCollision(yourFirstCollider, yourOtherCollider, true)
或
Physics.IgnoreLayerCollision(yourLayer, yourOtherLayer, true);
这将让玩家不会穿过地板,而是穿过你想要的任何其他物体。您也可以从编辑器设置... Edit --> Project Settings --> Physics --> 或 编辑 --> 项目设置 --> Physics 2D
玩家一旦接触到任何东西就应该死亡,
所以我不知道如何处理这个
这与问题无关,但OnCollisionEnter2D 用于检测碰撞。您可以在播放器上拨打Destroy。
void OnCollisionEnter2D(Collision2D collision)
{
Destroy(player);
}
编辑:
如果您还需要检测玩家何时接触其他碰撞器但不希望它们实际碰撞,那么您可以执行我上面描述的操作,然后将带有碰撞器的子对象添加到玩家。这些子对象将具有isTrigger 启用。然后,您可以使用OnTriggerEnter 函数来检测那些不是地板的对象之间何时发生碰撞。
void OnTriggerEnter(Collider other)
{
}