让Child GameObject摧毁自己的问题

时间:2017-10-13 20:46:18

标签: c# unity3d gameobject unity2d

我的 n GameObjects是母亲GameObject的孩子。

每个孩子都附有自己的子脚本。如果我点击一个子对象,所有孩子会回复。

当孩子被加载时,它将自己置于父母之下并且我也传递了一个数字,所以如果我愿意,我可以在以后跟上它。

这是我的脚本。真的不是很多。谁知道我做错了什么?

public GameObject parentGameObject;
public int childIndex;

void Start () {
    transform.parent = parentGameObject.transform;
}

void Update () {
    if (Input.GetMouseButton(0)) {
        Die();
    }
}

public void Die () {
     Debug.Log("Child " + this.childIndex + " clicked");
     Destroy(this.gameObject);
}

1 个答案:

答案 0 :(得分:2)

由于此脚本附加到您的所有子对象,因此它们都会检查是否单击了鼠标,因此在检测到鼠标点击时都会自行销毁(因为在每个脚本中都检测到鼠标单击)。 / p>

我建议在母亲游戏对象中使用一个脚本,该脚本使用Raycast并附加碰撞器并标记每个孩子以检测其中一个孩子何时被点击,然后销毁相应的点击对象。

目前尚不清楚你是否在2d,但它的例子是这样的:

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        // cast a ray at the mouses position into the screen and get information of the object the ray passes through
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
        if (hit.collider != null && hit.collider.tag == "child") //each child object is tagged as "child"
        {
            Destroy(hit.collider.gameObject);
        }
    }
}