4

画面の外から虫が入ってきたとします。これを行うには、4 つの座標 (StartX、StartY、TargetX、TargetY) が必要です。バグを適切な方向に回転させる方法は? 私はこれを何時間もいじっていて、この部分を理解することができませんでした. そのため、バグは画面に入りますが、正しい方向を向いていません。(4 つの座標は乱数です)。

学校で学んだように、線の勾配を数えています。

int deltaY = TargetY - StartY;
int deltaX = TargetX - StartX;
float gradient = (float)deltaY / (float)deltaX;

次に、バグを回転させる角度:

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);
            }
        });
    }
});

特定の勾配の線では、バグが 2 つの方向から来る可能性があるため、ソリューションはより複雑になり、2 つの方向を向く可能性があります。1/2 の勾配は 26.56 度を意味し、AndEngine 座標系では、バグがどちら側から来たかに応じて -26.56 または -206.56 度を意味することを知っています。

4

2 に答える 2

3

次のようなものを試してください。

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

死の長蛇の列を許してください。

于 2012-10-01T09:04:07.880 に答える