Unity raycast随机指向

时间:2015-09-08 02:29:41

标签: vector unity3d

Ray r = new Ray(this.transform.position, this.transform.eulerAngles);
        RaycastHit hit;
        if(Physics.Raycast(r, out hit, 3000, 256 /*layer 8*/ )){

这一小段代码没有给我一个前瞻性的光线投射,而且我已经在多个小时内搜索了许多解决方案,但无济于事。

所以,上面的内容并没有让我直接在对象的前方投射光线,我不知道为什么。我认为这可能是一种疏忽。

1 个答案:

答案 0 :(得分:1)

Ray的构造函数采用原点方向transform.eulerAngles会在xyz轴周围返回三个角度的向量。 “方向”听起来可能类似于角度,但事实并非如此:角度是旋转,而不是方向。重要的区别在于方向向量以某种方式“指向”,但旋转描述了某些方向的方向。您可以使用旋转信息创建方向向量,但幸运的是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的前向方向向量,这意味着光线将按照对象面向的方向拍摄。