我怎样才能轻松做到这一点?我可以使用框架中的任何功能,因为我创建了自己的功能,但我觉得它可能很慢(编程新手,所以我不知道)。
public Vector3 anglestoforward(Vector3 angles)
{
return new Vector3((float)(Math.Cos(angles.Y) * Math.Cos(angles.X)),(float)(Math.Sin(angles.Y) * Math.Cos(angles.X)),(float)(Math.Sin(angles.X * -1)));
}
答案 0 :(得分:3)
但那总是一样的,给我一个 我如何使用它的例子...
虽然你的代码可以工作,如果每帧完成几次,它的性能不是问题,当你想要做更多的事情而不是使用3D编程的基础知识时,你将学会更多地依赖线性代数(矢量数学)而不是角度和三角学。这也将涉及将方向存储为矩阵或四元数而不是角度。你会发现自己几乎不需要像你要问的那样将一组角度解析为矢量。
基本上,角度易于理解且直观,但与线性代数方法相比,使用它们的数学变得非常复杂。线性代数方法可能需要更多的学习,但它确实打开了创建3D算法的可能性。
Xna中各种类的内置方法更倾向于使用线性代数方法来实现3D而不是角度方法。
如果你愿意,这里有一篇我写的文章描述了使用矢量和矩阵而不是角度的基础知识:Vector Math approach
答案 1 :(得分:0)
Vector3具有Forward属性。如果您使用的是Matrix,则可以使用Matrix.Forward属性。两者都将返回包含Vector3
。
Forward vector