问题描述
我写了一个简单的代码来可视化视锥。它可以正常工作,但是当我将对象旋转90度时,视锥位于对象的“后面”,而我希望它在右边。
这是我可视化视锥的全部代码:
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class FieldOfView : MonoBehaviour
{
private Mesh fieldOfViewMesh;
private Vector3[] vertices;
private Vector2[] uv;
private int[] triangles;
public float fieldOfView = 70.0f;
public float fieldOfViewDistance = 7.0f;
public int rayCount = 32;
void Start()
{
fieldOfViewMesh = new Mesh();
fieldOfViewMesh.name = "fieldOfViewMesh";
GetComponent<MeshFilter>().mesh = fieldOfViewMesh;
vertices = new Vector3[rayCount + 2];
uv = new Vector2[vertices.Length];
triangles = new int[rayCount * 3];
}
void LateUpdate()
{
fieldOfViewMesh.Clear();
vertices[0] = transform.localPosition;
for (int i=0; i<=rayCount; i++)
{
vertices[i + 1] = transform.localPosition
+ VectorFromAngle(transform.eulerAngles.y - fieldOfView / 2.0f + fieldOfView / rayCount * i).normalized * fieldOfViewDistance;
if (i > 0 && i < rayCount)
{
triangles[i * 3 + 0] = 0;
triangles[i * 3 + 1] = i - 1;
triangles[i * 3 + 2] = i;
}
}
fieldOfViewMesh.vertices = vertices;
fieldOfViewMesh.uv = uv;
fieldOfViewMesh.triangles = triangles;
}
Vector3 VectorFromAngle(float inputAngle)
{
return Quaternion.AngleAxis(inputAngle,transform.up) * transform.forward;
}
}
我不确定我在做什么错。是否可以将度数转换为弧度(或缺乏弧度)?
解决方法
问题解决了。似乎使用localPosition是错误的。我在InverseTransformPoint()中使用了position,现在可以正常使用了。