【问题标题】:Does Raycast only work when the script is on main camera?Raycast 是否仅在脚本位于主摄像机上时才有效?
【发布时间】:2015-01-25 03:05:59
【问题描述】:

我想从主摄像头将光线投射作为鼠标(或触摸)工作,当点击并点击一个对象时,它会触发一些东西。我在对象的 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() 中吗?

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

【问题讨论】:

    标签: unity3d raycasting gameobject


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。是的..只要我放了对撞机,它就起作用了。谢谢。 :)
    猜你喜欢
    • 2016-02-01
    • 1970-01-01
    • 2021-10-12
    • 2012-03-31
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多