我使用Unity
中的Kudan
插件来构建android应用程序。我使用无标记模式。当我点击(触摸)模型时,它在这种无标记模式下生成,我想摧毁它。我使用Raycast
脚本如下所示。我尝试将脚本附加到Kudan
相机。我还创建了一个公共Camera游戏对象,并将Kudan Camera传递给它。然而,这两种选择都行不通。
有人知道我做错了什么吗?
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);
}
}
}
提前感谢!
假设你的实际代码是正确的,说的是GameObject而不是Gamobject,你的if语句有一个前大括号等,它可能是:
- 你还没有给你的模型"椅子"标签。如果你的射线击中了模型,但是模型没有正确的标签,它将被忽略。
- 射线的距离不足以击中任何东西(正如评论中提到的)。你没有指定一个距离,这在理论上应该意味着没有最大距离,但你永远不知道,Unity可能有一些奇怪的默认值或其他东西。你的模型没有碰撞器。物体需要一个碰撞器,否则物理引擎无法记录光线和物体之间的"碰撞"。
但实际上,一个更简单和可能更好的方法是根本不使用光线投射。如果你在脚本中创建了一个方法:
void OnMouseDown
{
Destroy(gameObject);
}
并将该脚本附加到模型上,然后当用户点击模型(或在移动设备上点击)时,如果它有碰撞器,它将被销毁。