我试着从场景中的随机点投射光线到采样位置以产生敌人。但是很明显光线来自世界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
我希望在空间中随机选择的点下面找到最近的点。
1条答案
按热度按时间k10s72fa1#
我终于明白了。光线投射的方向不是空间中的一个点世界,它们只是一个介于-1,-1,-1和1,1,1之间的范围,你可以把它指向原点。想象一下,方向是自动添加到原点的,从而形成一个vector 3世界空间点。