首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用aTan2面向目标对象

使用aTan2面向目标对象
EN

Stack Overflow用户
提问于 2015-01-12 03:14:39
回答 1查看 464关注 0票数 0

我创造了一个物体,它带着惯性向目的地移动。我很难让这个物体面对它的目的地。我的代码很简单,它计算角度,将其转换为度,并将该角度传递给Matrix4旋转函数,后者调整localTransform (浏览图)。

问题是,该对象产生,然后只是无休止地旋转。它慢慢地朝着它的目标前进,但只是不停地旋转。我在没有翻译的情况下测试过它,它无论在什么地方都会旋转。我所需要的只是让这个物体面对它的目的地。我的平移/旋转函数工作正常,我用它来旋转一个对象,有一个带有父对象旋转的对象,并朝这个方向旋转。它们为GLM库提供了1:1的结果。

我已经尝试过在aTan2中交换顺序,移除度转换(尽管这没有什么作用,但旋转函数需要度)和交换平移/旋转顺序。

localTransform是组合旋转/缩放/平移矩阵。row3column1为Y. 3为X.

代码语言:javascript
复制
float fAngle = atan2(v3Destination[1] - localTransform.data[3][1] , v3Destination[0] - localTransform.data[3][0]);
float fAngleDegrees = fAngle * 180 / PI;
localTransform = Matrix4::Rotate(localTransform, fAngleDegrees, Vector3(0.0f, 0.0f, 1.0f));

Vector3 Movement;
Movement[0] = v3Destination[0] - localTransform.data[3][0];
Movement[1] = v3Destination[1] - localTransform.data[3][1];

Movement = Movement * fSpeed * Application.GetTimeStep();
localTransform = Matrix4::Translate(localTransform, Movement);

对如何处理这件事有什么建议吗?这都是在2D坐标下,但是旋转是在Z轴上进行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 03:26:50

只是一种预感,但是localTransform矩阵是否在每一时间步骤都被完全重新计算了?

或者,您是否正在向已经在上一次迭代中旋转的矩阵中添加一个旋转。

这可以解释连续旋转的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27894794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档