方向角或将 3D 角度指向空间中的某个位置
我试图将一个实体指向 3D 矢量。 (基本上是设置一个实体角度,使其指向 3D 空间中的一个位置)。目前,我一直坚持从向量获取角度。
//Vectors in the bracket are 3D, first is the entity position, second is a position in space where I want to point at.
( myEntity.Pos - posToPointAt ).Angle
我目前正致力于将方向向量转换为角度。非常感谢您的帮助。
I'm trying to point an entity to a 3D vector. (basically setting an entities angle so it points to a position in 3D space). At the moment, I'm stuck with getting an angle from a vector.
//Vectors in the bracket are 3D, first is the entity position, second is a position in space where I want to point at.
( myEntity.Pos - posToPointAt ).Angle
I'm currently stuck at transforming the direction vector into an angle. Help is much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这不是它的工作原理,您丢失了一个重要的信息:您需要弄清楚您的实体现在指向什么方向,而不是使用实体位置?获取该信息可能就像使用当前的旋转矩阵并将其与沿 z 轴(或实体的“中性”方向)的单位向量相乘一样简单,但这一切都取决于您的特定设置。
一旦您拥有两个方向向量(您当前的方向,以及到新的所需位置的方向...最后一个是标准化的“myEntity.Pos - posToPointAt”),您可以使用如下所示的函数计算方向之间的旋转。请注意,我在这里使用四元数,您可能需要旋转矩阵。
That's not how it works, you are missing an essential bit of information: in stead of using the entity position, you need to figure out what way your entity is pointing right now? Acquiring that info might be as simple as using your current rotation matrix and multiplying it with a unit vector down the z-axis (or whatever the "neutral" direction of the entity is), but that all depends on your particular setup.
Once you have both direction vectors (your current direction, and the direction to the new desired location... the last one being the normalized "myEntity.Pos - posToPointAt"), you use a function like below to calculate the rotation between the directions. Notice I use quaternions here, you might be needing a rotation matrix.