所以我有一个问题:D.我创建了一个简单的脚本,当点击到屏幕上时,它将实例化鼠标弦上的一个球的预制件。然后我继续创作了第二个脚本。在第二个脚本中,wich被附加到一个球的预制件上,我测试了鼠标点击,当鼠标点击时,我删除了一个GameObject球。我把球预制件分配给GameObject变量球。唯一的问题是(这也是为什么这不是一个无聊的问题,至少我希望.)当我点击球的时候它会删除所有的球。我知道它的发生,因为它们基本上都只是一个预制件。我想我会解决这个问题,给每个预制层分别命名,然后删除它们的名字,但我的海岸统一有一个更好的解决办法。我不介意javascript或c#解决方案,谢谢!
PS:我在用毁灭的方法。
发布于 2014-08-14 14:13:56
听起来你在听第二个脚本中的鼠标点击,但没有检查你是否在点击这个球。相反,你应该检查鼠标是否通过投射射线击中你的球。
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);
}
}发布于 2017-01-15 14:49:47
我遇到了这个问题,但在我的例子中,我得到了一个GameObject[]数组,并在该数组中选择了一些项,然后克隆它并随机显示它.
我遇到这种情况,因为我有一个GameObject数组,并考虑如何具体地销毁它,因为如果我使用循环,它将按顺序销毁.
有一个关于如何摧毁.的教程。来自Jay AnAm的视频
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://stackoverflow.com/questions/25309907
复制相似问题