【问题标题】:OnCollisionEnter(collision) function called even without collision occurring in Unity即使在 Unity 中没有发生碰撞,也会调用 OnCollisionEnter(collision) 函数
【发布时间】:2020-05-23 20:49:19
【问题描述】:

我正在尝试在 Unity 中创建一个第一人称射击游戏,其中球体被发射,如果它击中周围的立方体应该被摧毁。球体是通过鼠标点击创建的。

在球体与任何物体碰撞之前调用函数 OnCollisionEnter(collision)。即,在创建新球体时立即调用它,即使没有碰撞并且它会立即破坏球体。

private void OnCollisionEnter(Collision collision)
{
        Debug.Log("OnCollisionEnter - MOVER");
        DestroyObject(gameObject);
}

代码写在球体的 Mover 文件中。

任何帮助都将不胜感激,因为我是 Unity 的新手。

【问题讨论】:

标签: unity3d


【解决方案1】:

你的场景中有一些对象,上面有这个脚本,它的对撞机在你的枪射程内。可能是立方体上的碰撞器非常庞大,或者您不小心将此脚本附加到您不打算的游戏对象上。如果您在游戏对象层次结构上方的搜索栏中输入完整的脚本名称,它将显示具有该脚本的每个游戏对象。

【讨论】:

    【解决方案2】:

    OnCollisionEnter 被调用用于场景中当前游戏对象的任何碰撞。如果您想为特定的游戏对象(如 PlayerEnemy 等)调用此函数,请为您的对象分配一个标签,并使用您的 collision 对象的标签进行检查。

    void OnCollisionEnter(Collision collision)
        {
            if(collision.tag == "Player")
            {
                Destroy(gameObject);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2013-11-16
      • 2017-05-21
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 2022-01-21
      • 1970-01-01
      • 2023-01-07
      相关资源
      最近更新 更多