如何使位图图像在移动和旋转的整个过程中都指向前方?

问题描述 投票:-1回答:1

是否有某种公式可以旋转this link right here中的箭头,以确保箭头始终指向红色?每次尝试时,我总是得到一个关闭的数字,并且箭头的旋转与箭头的旋转和移动不同步。

几段代码来显示我正在使用的代码:

arrow.moveX(true);
arrow.moveY(true);

if(arrow.turning) {
     arrow.turn(player.direction / (0.75 * arrow.getSpeed()));
}

重要的箭头速度为12.5单位/次。至于机芯本身:

public void moveX(boolean turn) {

    if(turn) {
        x += speed * Math.cos(angle);
    } else {
        x += speed;
    }

}

public void moveY(boolean turn) {

    if(turn) {
        y += speed * Math.sin(angle);
    } else {
        y += speed;
    }

}

我试图弄清楚如何渲染箭头的sprite,确保无论指针旋转了多少,指针本身都面向着移动中的“向前”方向。如果需要的话,这是render方法本身:

@Override
public void render(Canvas c, Paint p) {

    matrix.setTranslate((float)x, (float)y);

    if(alive) {
        matrix.postRotate(drawnAngle, (float) (x + width / 2), (float) (y + height / 2));
    } else {
        matrix.postRotate(angle, (float) (x + width / 2), (float) (y + height / 2));
        angle += speed * 2;
    }

    c.drawBitmap(getSprite(), matrix, p);

}

变量drawnAngle现在的值为0,它是一个占位符。这只是我试图找到正确的数字来旋转箭头的尝试。

java android geometry trigonometry
1个回答
1
投票

因此,我实际上已经花了数小时试图解决这个问题,当我决定发布帮助时,我就知道了!事实证明,当我在代码的第一个片段(实际运动)中使用弧度时,我应该在最后一个片段的实际旋转中使用度数!

我将drawnAngle更改为(float)(angle * (180 / Math.PI)),这对我来说是一个解决方案!

希望其他人都没有这个问题。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.