我该如何轻松地做到这一点呢?框架中有没有我可以使用的函数,因为我创建了自己的函数,但我觉得它可能很慢(编程新手,所以我不知道)。
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)));
}发布于 2011-06-21 09:22:31
但这总是一样的,给我一个例子,我会如何使用它……
虽然你的代码会工作,如果每帧做几次,它的性能也不是问题,但当你想用3D编程做更多的基础工作时,你将学会更多地依赖线性代数(向量数学),而不是角度和三角。这还包括将方向存储为矩阵或四元数,而不是角度。你会发现自己几乎不需要像你所要求的那样将一组角度解析为一个向量。
基本上,角度很容易理解,也很直观,但与线性代数方法相比,使用它们的数学变得非常复杂。线性代数方法可能需要更多的学习,但它确实打开了创建3D算法的可能性的闸门。
Xna中各种类的内置方法更倾向于帮助3D的线性代数方法,而不是角度方法。
如果你愿意,这里有一篇我写的文章,描述了使用矢量和矩阵而不是角度的基础:Vector Math approach
发布于 2011-06-21 06:31:11
Vector3有一个Forward属性。如果使用矩阵,则可以使用Matrix.Forward属性。两者都将返回一个包含Forward vector组件的Vector3。
https://stackoverflow.com/questions/6418297
复制相似问题