Существует ли какая-то формула для поворота стрелки в этой ссылке прямо здесь , чтобы она всегда указывала на красный? Каждый раз, когда я пытался, я всегда получал неактивное число, и вращение стрелки не синхронизировано с поворотом и движением стрелки.
Пара фрагментов кода, чтобы показать, что яработа с:
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;
}
}
Я пытаюсь выяснить, как визуализировать спрайт стрелки, убедитесь, что сам указатель направлен в том направлении «вперед», в котором он движется, независимо от того, насколькоэто вращается. Вот сам метод рендеринга, если это необходимо:
@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 прямо сейчас, это заполнитель. Это была просто моя попытка найти нужное число, чтобы повернуть стрелку на.