首页 文章

Raycast仅在脚本位于主摄像头上时才有效吗?

提问于
浏览
1

我希望将光线投射作为主摄像头的鼠标(或触摸)工作,当点击并点击一个对象时,它会触发一些东西 . 我在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的脚本更新() . 它有所不同吗?

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

我没有任何对撞机的物体,我是否需要在物体上有一个以使光线碰撞它?

1 回答

  • 1

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

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

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

相关问题