Android Andengine中的旋转图像

Android Andengine中的旋转图像,android,andengine,Android,Andengine,让我们假设有虫子从外面进入屏幕。为此,我们需要有4个坐标(StartX、StartY、TargetX、TargetY)。如何将bug旋转到适当的方向?我已经搞乱这几个小时了,一直无法弄清楚这部分。因此,错误出现在屏幕上,但它没有朝向正确的方向。(四个坐标是随机数) 我正在计算我在学校学到的直线的坡度: int deltaY=TargetY-StartY; int deltaX=TargetX-StartX; 浮动梯度=(浮动)三角洲/(浮动)三角洲; 然后旋转bug的角度: 浮动角度=(浮动)

让我们假设有虫子从外面进入屏幕。为此,我们需要有4个坐标(StartX、StartY、TargetX、TargetY)。如何将bug旋转到适当的方向?我已经搞乱这几个小时了,一直无法弄清楚这部分。因此,错误出现在屏幕上,但它没有朝向正确的方向。(四个坐标是随机数)

我正在计算我在学校学到的直线的坡度:

int deltaY=TargetY-StartY;
int deltaX=TargetX-StartX;
浮动梯度=(浮动)三角洲/(浮动)三角洲;
然后旋转bug的角度:

浮动角度=(浮动)(数学atan(梯度)*180/PI);
然后是“旋转和移动”修改器:

registerEntityModifier(新的旋转修改器(0.3f,0,角度){
@凌驾
修改完成后的受保护空隙(密度pItem){
super.onModifierFinished(pItem);
registerEntityModifier(新的MoveModifier(0.8f、StartX、TargetX、StartY、TargetY){
@凌驾
修改完成后的受保护空隙(密度pItem){
super.onModifierFinished(pItem);
}
});
}
});
解决方案更为复杂,因为在具有一定梯度的直线上,bug可能来自两个方向,因此它可能面向两个方向。
我知道1/2的梯度意味着26.56度,而在安德林坐标系中,它意味着-26.56度或-206.56度,这取决于缺陷来自哪一侧。

尝试以下方法:

float bugAngle = 180 + (float) Math.toDegrees(Math.atan2((targetY - bugSprite.getRotationCenterY() - startY), (targetX - bugSprite.getRotationCenterX() - startX)));
bugSprite.setRotation(bugAngle);

请原谅死亡的长队。

试着用一个更简单的方法:

float angle = getAngle(StartX, TargetX , StartY, TargetY );
YourSprite.setRotation((int) angle);

Brokap:D

我用几个if-s就成功了,但你的解决方案更简单!