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