我当前正在使用atan2使我的对象(矩形)在沿曲线移动时面向法线。但是由于某种原因,即使移动超出曲线的中间位置,对象也始终会向右斜向。

这是我使用的公式:

vecdiff = Normals[counterNorm] - player.getPosition();
float angle = atan2(vecdiff.y, vecdiff.x)*180/PI + 90;
player.setRotation(angle);


不太确定在经过曲线中间后如何使对象斜向左

最佳答案

由于这是两年前的事,大概已经解决了您的问题,但是如果没有解决,或者为了后代,我想我有一个答案。我正在处理相同的问题(我认为@Walter是正确的,您的问题有点稀疏),但是在Java中,尽管我认为这不会影响该问题。

您的问题是坐标系的中心。您要寻找的角度是曲线所处的圆的中心,但是“ getPosition”正在使用的坐标系在其他位置。如果是Android,则位于绘图区域的左上方。我认为可能是这种情况,因为您所描述的听起来像我最初得到的。

您要做的就是找到所需的参考点(该圆的中心),并相应地调整输入到atan2的坐标。

因为我正在处理一个圆,所以我对圆的所有点进行了采样,并用

CentreX = minX + (maxX - minX)/2
CentreY = minY + (maxY - minY)/2


由于您说要沿此路径设置矩形动画,由于atan2中的不连续性,您可能仍然会遇到一些小问题。我还在努力。

关于c++ - 在C++中使用Atan2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43427246/

10-09 13:17