Unity3D光线投射来自世界原点而不是指定的随机点?

kxeu7u2r  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(107)

我试着从场景中的随机点投射光线到采样位置以产生敌人。但是很明显光线来自世界0,0,0,并且实际上经过随机点。
下面是我的代码:

public Vector3 GetRandomPositionSpawnable (Vector3 origin, float radius)
{
     Vector3 randomPoint = origin + Random.insideUnitSphere * radius;

     if (Physics.Raycast(randomPoint, randomPoint + Vector3.down, out RaycastHit hit, Mathf.Infinity, LayerMask.GetMask("Scenery")))
     {
          //these are methods I made to draw permanent gizmos spheres and lines calling from anywhere
          Tools.DebugSphere(randomPoint, 10, Color.yellow); 
          Tools.DebugSphere(hit.point, 20, Color.red);
          Tools.DebugLine(randomPoint, hit.point, Color.white);

          return hit.point;
     }

     return Vector3.zero;
}

从这些图像中可以看到,红色的Gizmo球体并不在黄色球体下方,而是实际上来自世界0,0,0,并前往随机选择的点(并在之后发生碰撞)。
a image with gizmosSpheres and gizmoLines
我希望在空间中随机选择的点下面找到最近的点。

k10s72fa

k10s72fa1#

我终于明白了。光线投射的方向不是空间中的一个点世界,它们只是一个介于-1,-1,-1和1,1,1之间的范围,你可以把它指向原点。想象一下,方向是自动添加到原点的,从而形成一个vector 3世界空间点。

相关问题