0

我正在使用Kudan插件Unity来构建一个 android 应用程序。我正在使用无标记模式。当我点击(触摸)以这种无标记模式生成的模型时,我想破坏它。我正在使用Raycast下面列出的脚本。我尝试将脚本附加到Kudan相机。我还创建了一个公共相机游戏对象并将 Kudan 相机传递给它。但是,这两个选项都不起作用。

有谁知道我做错了什么?

public Gamobject model;

if (Input.touchCount > 0) 
        RaycastHit hit;

            Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (0).position);

        if (Physics.Raycast (ray, out hit)) 
        {
            if (hit.collider.gameObject.tag == "chair") 
            {
                Destroy (model); 
            }
        }
    }  

提前致谢!

4

1 回答 1

1

假设您的实际代码是正确的并且说 GameObject 而不是 Gamobject 并且您的 if 语句有一个左大括号等,它可能是:

  • 你还没有给你的模型“椅子”标签。如果您的光线击中模型,但模型没有正确的标签,它将被忽略。
  • Ray 的距离不足以击中任何东西(如评论中所述)。你没有指定距离,理论上应该意味着没有最大距离,但你永远不知道,Unity 可能有一些奇怪的默认值或其他东西。
  • 您的模型没有对撞机。物体需要一个对撞机,否则物理引擎无法记录射线和物体之间的“碰撞”。

但实际上,一个更简单且可能更好的方法是根本不使用 Raycast。如果您在脚本中创建方法:

void OnMouseDown
{
    Destroy(gameObject);
}

并将该脚本附加到您的模型,然后当用户单击模型(或点击移动设备)时,只要它有一个对撞机,它将被销毁。

于 2016-09-19T08:57:04.570 回答