是否有某种公式可以旋转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,它是一个占位符。这只是我试图找到正确的数字来旋转箭头的尝试。
因此,我实际上已经花了数小时试图解决这个问题,当我决定发布帮助时,我就知道了!事实证明,当我在代码的第一个片段(实际运动)中使用弧度时,我应该在最后一个片段的实际旋转中使用度数!
我将drawnAngle
更改为(float)(angle * (180 / Math.PI))
,这对我来说是一个解决方案!
希望其他人都没有这个问题。