假设有错误从外部进入屏幕。为此,我们需要有 4 个坐标(StartX、StartY、TargetX、TargetY)。如何将错误旋转到适当的方向?我已经搞砸了几个小时,一直无法弄清楚这部分。所以错误进入屏幕但它没有面向正确的方向。(四个坐标是随机数)。
我正在计算我在学校学到的线的梯度:
int deltaY = TargetY - StartY;
int deltaX = TargetX - StartX;
float gradient = (float)deltaY / (float)deltaX;
然后是旋转 bug 的角度:
float angle = (float) (Math.atan(gradient) * 180 / PI);
然后是旋转和移动修改器:
registerEntityModifier(new RotationModifier(0.3f, 0, angle) {
@Override
protected void onModifierFinished(IEntity pItem) {
super.onModifierFinished(pItem);
registerEntityModifier(new MoveModifier(0.8f, StartX, TargetX, StartY, TargetY) {
@Override
protected void onModifierFinished(IEntity pItem) {
super.onModifierFinished(pItem);
}
});
}
});
解决方案更复杂,因为在一定梯度的线上,错误可以来自两个方向,因此它可以面向两个方向。我知道 1/2 的梯度意味着 26.56 度,在 AndEngine 坐标系中它意味着 -26.56 或 -206.56 度,具体取决于错误来自哪一侧。