GameObject与Sprite相撞?

时间:2018-04-19 07:53:15

标签: unity3d

所以我有一个精灵,它的名字是"公主"当一个立方体接触我的精灵 我希望公主被摧毁。我添加了一个刚体和一个盒子对撞机,但由于某种原因,立方体只是通过公主精灵。

多维数据集是使用代码生成的,因此它的名称是" Cube"根据层次结构,我写了这段代码

private void OnCollisionEnter(Collision collision)
{
   if(collision.gameObject.name == "Cube")
    {
        Destroy(this.gameObject);
    } 
}

我认为Destroy(this.gameObject)会摧毁公主,但他们甚至没有碰撞。

有什么想法吗?

以下是"游戏"看起来像。

Game

2 个答案:

答案 0 :(得分:0)

检查您是否选中了"触发器"在箱子里面碰撞。 你应该使用标签,因为如果你产生多个立方体,它们的名称就像" Cube(1)"等等。 你需要使用collider2d

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Cube")
    {
        Destroy(this.gameObject);
    }
}

你的两个对象都需要有盒子collider2d和rigidbody2d而不是设置为"是触发器#34;。例: enter image description here

答案 1 :(得分:0)

销毁(this.gameObject)用于自己的对象,

collision.gameObject.setActive(“ False”)适用于碰撞对象

此代码正在我的游戏上运行。其中“玩家”是我的Sprite标签。并确保已为您的多维数据集选中“是触发器”

void OnTriggerEnter2D(Collider2D other) {
    if (other.tag == "Player")
    {
        Destroy(gameObject);
    }

}

或者在您的情况下,您可以在Cube脚本中使用以下代码,然后可能会起作用

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "princess")
    {
        collision.gameObject.setActive("False")
    }
}