当鼠标位于门(红色区域)时,我想做点什么。我正在试图投射雷,但雷并没有击中门,我无法找到它到底在哪里击中。另外我怎么能df <- read.table(text =
"Name Year Value
A 1990 5
A 1990 3
A 1991 5
A 1995 5
B 2000 0
B 2000 4
B 1998 5
C 1890 3
C 1790 2",
header = TRUE, stringsAsFactors = FALSE)
这条光线?
Debug.DrawRay
答案 0 :(得分:0)
您可以将此光线绘制为:
Debug.DrawRay(ray.origin, ray.direction);
或
Debug.DrawRay(Camera.main.transform.position, Camera.main.ScreenPointToRay(Input.mousePosition).direction);
一旦你定义了你的光线,选项1会更直接,但是如果事实证明这个Ray没有按照你期望的方式运行,那么选项2会让你有更多的选择。
camera.ScreenPointToRay
预计Vector3
但Input.mousePosition
会返回Vector2
。 Vector3和Vector2上的Unity文档看起来你应该能够将Vector2隐含地用作Vector3,并且它会将z组件填充为0,但如果Debug.DrawRay
显示光线是问题,那么你需要追加0.可能是这样的:
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0));
答案 1 :(得分:0)
您可能需要创建一个LayerMask并将其添加到Physics.Raycast的参数中;还要确保门上有对撞机。多少次我忘了添加一个对撞机,你会感到惊讶。
在绘制光线方面,如果由于某种原因这不起作用。使用Debug.DrawRay。我建议将它放在FixedUpdate()或Update()中。颜色和持续时间你可以设置为你想要的任何东西,但我建议让depthTest为假,因为你想要无论如何绘制光线。然后称它为:
Debug.DrawRay(ray.origin, ray.direction, <color>, <duration>, false);
答案 2 :(得分:0)
解决方法是转到您的相机,并将标签设置为“ MainCamera ”。或者,您可以修改代码以包含照相机变量,然后使用该变量代替Camera.main。