当脚本在主摄像头上时,Raycast是否只能工作?

时间:2015-01-25 03:05:59

标签: unity3d raycasting gameobject

我希望将光线投射作为主摄像头的鼠标(或触控)工作,当点击并点击某个物体时,它会触发某些东西。我在Object的update()中有脚本如下:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
  // Debug output to confirm it is hit. 
}

我从许多教程中看到它是非常标准的脚本。但是,它没有点击Debug行。

唯一不同的是它是对象的更新,而不是主Camera的脚本更新()。它有所不同吗?

更新脚本中的代码是否属于拍摄光线的原始游戏对象(或相机)?或者它可以在任何游戏对象的附加脚本的update()?

我没有任何对撞机的物体,我是否需要一个物体才能让光线碰撞?

1 个答案:

答案 0 :(得分:1)

使用Physics.Raycast,您可以从空间中的任何一点射向任何方向。只要您能够以某种方式计算起点和方向,那么脚本附加到哪个gameObject就没有关系。

问题是您的光线目标上没有碰撞器。光线投射仅计算射线撞击的对撞机。

因此添加碰撞器可以解决您的问题。请记住,如果您使用Physics2D选项卡中的2D对撞机,则需要使用Physics2d.Raycast。如果您使用“物理”选项卡中的3D对撞机,则需要使用Physics.Raycast