Ray r = new Ray(this.transform.position, this.transform.eulerAngles);
RaycastHit hit;
if(Physics.Raycast(r, out hit, 3000, 256 /*layer 8*/ )){
这一小段代码没有给我一个前瞻性的光线投射,而且我已经在多个小时内搜索了许多解决方案,但无济于事。
所以,上面的内容并没有让我直接在对象的前方投射光线,我不知道为什么。我认为这可能是一种疏忽。
答案 0 :(得分:1)
Ray
的构造函数采用原点和方向。 transform.eulerAngles
会在x
,y
和z
轴周围返回三个角度的向量。 “方向”听起来可能类似于角度,但事实并非如此:角度是旋转,而不是方向。重要的区别在于方向向量以某种方式“指向”,但旋转描述了某些方向的方向。您可以使用旋转信息创建方向向量,但幸运的是Unity可以为您完成此操作。
解决此问题的最简单方法是使用Unity的内置方法来获取对象的前向方向向量(如Ray
doc中所示):
// Create a ray from the transform position along the transform's z-axis
Ray ray = new Ray(transform.position, transform.forward);
transform.forward
为您提供transform
的前向方向向量,这意味着光线将按照对象面向的方向拍摄。