球员正在摔倒在地

时间:2017-07-24 04:43:37

标签: c# unity3d 2d

我已经尝试了一切。无论我在其下放置什么样的GameObject(立方体等),玩家都会失败。它有一个圆形的collier和一个刚体。

如何阻止物体掉落地板

我应该提一下,玩家应该在与任何东西接触时死亡,所以我不知道如何处理这个问题。

2 个答案:

答案 0 :(得分:3)

如果对象掉落在地板上,请检查以下内容。

<强> 1 即可。 Collider是否附加到该对象?如果没有,则将Collider或Collider2D附加到该对象。

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

第3 即可。如果Rigidbody附加到GameObject,那么在点击“播放”之前确保播放器高出地面100%,否则您将遇到更多问题。

<强> 4 即可。 GameObject的大小可能很小。真的很小。在对象与另一个对象发生碰撞之前,对象的大小有限制。尝试调整对象的大小,然后将相机移回。

  

如果我为我的播放器禁用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);

这将让玩家不会通过场地,而是通过你想要的任何其他物体。您也可以从编辑器设置中执行此操作... 编辑 - &gt; 项目设置 - &gt; 物理 - &gt;或编辑 - &gt; 项目设置 - &gt; 物理2D

  

一旦接触到任何东西,玩家应该死   所以我不知道如何处理这个

这与问题无关,但OnCollisionEnter2D用于检测collsion。您可以在播放器上拨打Destroy

void OnCollisionEnter2D(Collision2D collision)
{
    Destroy(player);
}

修改

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

void OnTriggerEnter(Collider other)
{

}

答案 1 :(得分:-1)

对于您希望玩家通过的对象,

isTrigger必须为true。玩家isTrigger应始终为false

玩家需要附加rigidbody2D

对您的代码进行调试,对于触发的对手检查OnTriggerEnter2d,对于未触发的对手检查OnCollisionEnter2D