我希望将光线投射作为主摄像头的鼠标(或触控)工作,当点击并点击某个物体时,它会触发某些东西。我在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()?
我没有任何对撞机的物体,我是否需要一个物体才能让光线碰撞?
答案 0 :(得分:1)
使用Physics.Raycast
,您可以从空间中的任何一点射向任何方向。只要您能够以某种方式计算起点和方向,那么脚本附加到哪个gameObject就没有关系。
问题是您的光线目标上没有碰撞器。光线投射仅计算射线撞击的对撞机。
因此添加碰撞器可以解决您的问题。请记住,如果您使用Physics2D选项卡中的2D对撞机,则需要使用Physics2d.Raycast
。如果您使用“物理”选项卡中的3D对撞机,则需要使用Physics.Raycast
。