玩家从地板上掉下来

ROO*_*OOT 0 c# 2d unity-game-engine

我什么都试过了。无论我在它下面放置什么样的游戏对象(立方体等),玩家都会失败。它有一个圆形煤矿和一个刚体。

我怎样才能阻止物体从地板上掉下来

我应该提一下,玩家一旦接触到任何东西就应该死,所以我不知道如何解决这个问题。

Pro*_*mer 5

如果 Object 从地板上掉下来,请检查以下内容。

1 . Collider 是否附加到该对象上?如果没有,则将 Collider 或 Collider2D 附加到该对象。

2 . 是否在任何对象碰撞器上启用了 isTrigger?如果是,则在两个碰撞器上禁用 IsTrigger。

3 . 如果 Rigidbody 附加到 GameObject,则在单击“Play”之前确保玩家 100% 高于地板,否则您将遇到更多问题。

4 . 游戏对象的大小可能很小。真的很小。对象在与另一个对象碰撞之前可以达到的大小是有限制的。尝试调整对象的大小,然后将相机向后移动。

如果我为我的播放器禁用 isTrigger,那么它将无法通过我需要的其他对象。

这根本不是问题。您可以使用图层使 Unity 设置哪些碰撞器可以与另一个碰撞器发生碰撞。只需禁用 isTrigger 然后使用:

对于 2D

Physics2D.IgnoreCollision(yourFirstCollider, yourOtherCollider, true);
Run Code Online (Sandbox Code Playgroud)

或者

Physics2D.IgnoreLayerCollision(yourLayer, yourOtherLayer, true)
Run Code Online (Sandbox Code Playgroud)

对于 3D

Physics.IgnoreCollision(yourFirstCollider, yourOtherCollider, true)
Run Code Online (Sandbox Code Playgroud)

或者

Physics.IgnoreLayerCollision(yourLayer, yourOtherLayer, true);
Run Code Online (Sandbox Code Playgroud)

这将使玩家不会穿过地板,而是穿过你想要的任何其他物体。您也可以从编辑器设置...编辑-->项目设置-->物理--> 或编辑-->项目设置-->物理 2D

玩家一旦接触到任何东西就应该死,所以我不知道如何解决这个问题

这与问题无关,但OnCollisionEnter2D用于检测冲突。您可以调用Destroy播放器。

void OnCollisionEnter2D(Collision2D collision)
{
    Destroy(player);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您还需要检测玩家何时接触其他碰撞器但不希望它们实际发生碰撞,那么您可以执行我上面描述的操作,然后将带有碰撞器的子对象添加到玩家。这些子对象将已isTrigger 启用。然后,您可以使用 eOnTriggerEnter函数来检测那些不是地板的对象之间何时发生碰撞。

void OnTriggerEnter(Collider other)
{

}
Run Code Online (Sandbox Code Playgroud)