Unity 2D:如何在单击时销毁一个预制克隆

时间:2014-08-14 13:57:47

标签: unity3d destroy

所以我有一个问题:D。我创建了一个简单的脚本,当点击屏幕时,它将在鼠标坐标上实例化一个球的预制件。然后我继续创建了第二个脚本。在第二个脚本中,我附加在一个球的预制件上,我测试了鼠标点击,当发生这种情况时我删除了一个GameObject球。我将球预制件分配给GameObject变量球。唯一的问题是(也就是为什么这不是一个重复的问题,至少我希望......),当我点击球时它会删除所有的球。我知道它的发生是因为它们基本上只是一个预制件。我认为我通过给每个预制cline分别给出名称来解决它,然后通过名字删除它们,但是我很漂亮的岸上团结有一个更好的解决方案。我不介意javascript或c#解决方案,谢谢!

PS:我正在使用Destroy方法。

2 个答案:

答案 0 :(得分:4)

听起来您正在第二个脚本中点击鼠标,但不会检查您是否点击了球。相反,你应该检查鼠标是否通过投射光线来击中你的球。

if (Input.GetMouseButtonDown(0)) 
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if(Physics.Raycast(ray,out hit))
    {
        if(hit.collider.gameObject==gameObject) Destroy(gameObject);
    }
}

编辑 - >对于unity2d:

if (Input.GetMouseButtonDown(0)) 
{
   RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

   if(hit.collider != null)
  {
        if(hit.collider.gameObject==gameObject) Destroy(gameObject);
  }
}

答案 1 :(得分:0)

我遇到了这个问题,但在我的情况下,我有一个F12数组并选择该数组中的某个项目然后克隆它并随机显示...

我遇到这个,因为我有一个GameObject[]的数组,并想着我应该如何专门销毁它,因为如果我使用循环它将会顺序销毁......

嗯,有一个关于如何销毁Jay AnAm的视频的教程

GameObject

确保将box colliider的组件添加到游戏对象。

点击此链接see this