即使在Unity中没有发生碰撞,也会调用OnCollisionEnter(collision)函数。

问题描述 投票:0回答:1

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

函数OnCollisionEnter(collision)是在球体与任何东西碰撞之前被调用的,也就是说,当一个新的球体被创建时,它被直接调用,即使没有碰撞,它也会直接摧毁球体。

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

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

如果有任何帮助将非常感激,因为我是unity的新手。

unity3d
1个回答
0
投票

在你的场景中,你有一些物体,上面有这个脚本,它的准星在你的枪的范围内。这可能是对准器的立方体是巨大的,或者你不小心把这个脚本附加在一个游戏对象上,你不打算。如果你在gameobject hierarchy上面的搜索栏中输入完整的脚本名称,它将显示每个游戏对象都有这个脚本。


0
投票

OnCollisionEnter 如果你想为一个特定的游戏对象调用这个函数,例如 PlayerEnemy 或等等。,给你的对象分配一个标签,并与你一起检查它 collision 对象的标签。

void OnCollisionEnter(Collision collision)
    {
        if(collision.tag == "Player")
        {
            Destroy(gameObject);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.