1

我想从主摄像机将光线投射作为鼠标(或触摸)工作,当点击并点击一个对象时,它会触发一些东西。我在对象的 update() 中有如下脚本:

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

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

唯一不同的是它是对象的更新,而不是在主相机的脚本 update() 上。它有什么不同吗?

更新脚本中的代码应该属于射出射线的原始游戏对象(或相机)吗?或者它可以在任何游戏对象的附加脚本的 update() 中吗?

我拥有的对象没有任何对撞机,我是否需要在对象上安装一个才能让光线与它发生碰撞?

4

1 回答 1

1

有了Physics.Raycast它,您可以从空间中的任何点向任何方向发射光线。只要您能够以某种方式计算起点和方向,脚本附加到哪个游戏对象都无关紧要。

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

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

于 2015-01-25T07:35:54.440 回答