gpt4 book ai didi

java - Android - Math.atan2 的问题

转载 作者:行者123 更新时间:2023-11-30 04:40:44 25 4
gpt4 key购买 nike

因此,在我使用 andengine 制作的安卓游戏中,我对其进行了设置,以便在我触摸并拖动玩家 Sprite 时,它会不断旋转,以便角色始终面向其行进方向。

public class Player extends AnimatedSprite {
private float lastX = Game.centerX;
private float lastY = Game.centerY;
private static int angle = 0;

// ...

@Override
public boolean onAreaTouched(final TouchEvent sceneTouchEvent, final float touchAreaLocalX, final float touchAreaLocalY) {
Body body = OrbCatch.physicsWorld.getPhysicsConnectorManager().findBodyByShape(this);
if (sceneTouchEvent.getAction() == TouchEvent.ACTION_MOVE) {
float currentX = sceneTouchEvent.getX();
float currentY = sceneTouchEvent.getY();
angle = (int) (Math.atan2(currentY - lastY, currentX - lastX) * 180 / Math.PI);
lastX = currentX;
lastY = currentY;
}
body.setTransform(new Vector2(sceneTouchEvent.getX(),sceneTouchEvent.getY() )
.mul(1/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT),angle);
return true;
}

}

关键行是这样的:

angle = (int) (Math.atan2(currentY - lastY, currentX - lastX) * 180 / Math.PI)

它获取最后已知坐标和当前坐标,计算它们之间的角度,并将其从弧度转换为度数。好吧,昨天一切正常,但是尽管今天没有更改任何代码,但它的行为很奇怪。 Sprite 的方向变化不规律,没有明显的模式。如果我沿直线移动它,它会在 2 或 3 个明显不同的角度之间连续交替(通常其中一个是正确的角度)。

编辑:已解决,见下文

最佳答案

问题是 Body.setTransform 角度参数采用弧度值,而不是度数。 Andengine 的文档太少了...

关于java - Android - Math.atan2 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com