首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一2D:如何在点击时只销毁一个预制件克隆

统一2D:如何在点击时只销毁一个预制件克隆
EN

Stack Overflow用户
提问于 2014-08-14 13:57:47
回答 2查看 7.2K关注 0票数 3

所以我有一个问题:D.我创建了一个简单的脚本,当点击到屏幕上时,它将实例化鼠标弦上的一个球的预制件。然后我继续创作了第二个脚本。在第二个脚本中,wich被附加到一个球的预制件上,我测试了鼠标点击,当鼠标点击时,我删除了一个GameObject球。我把球预制件分配给GameObject变量球。唯一的问题是(这也是为什么这不是一个无聊的问题,至少我希望.)当我点击球的时候它会删除所有的球。我知道它的发生,因为它们基本上都只是一个预制件。我想我会解决这个问题,给每个预制层分别命名,然后删除它们的名字,但我的海岸统一有一个更好的解决办法。我不介意javascript或c#解决方案,谢谢!

PS:我在用毁灭的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 14:13:56

听起来你在听第二个脚本中的鼠标点击,但没有检查你是否在点击这个球。相反,你应该检查鼠标是否通过投射射线击中你的球。

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);
  }
}
票数 4
EN

Stack Overflow用户

发布于 2017-01-15 14:49:47

我遇到了这个问题,但在我的例子中,我得到了一个GameObject[]数组,并在该数组中选择了一些项,然后克隆它并随机显示它.

我遇到这种情况,因为我有一个GameObject数组,并考虑如何具体地销毁它,因为如果我使用循环,它将按顺序销毁.

有一个关于如何摧毁.的教程。来自Jay AnAm的视频

代码语言:javascript
复制
void Update(){
    if(Input.GetMouseButtonDown(0)){
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        if(Physics.Raycast(ray, out hit)){

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

确保在游戏对象中添加盒准直器的组件。

检查这个链接https://www.youtube.com/watch?v=2tknfsylens

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25309907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档