Я почти получил, но есть несколько проблем.
Вот мой текущий код для рисования стрелок. Создание пути включено.
{//gets done just once to create the arrow
oBlipPath.moveTo(0, -5);
oBlipPath.lineTo(5, 0);
oBlipPath.lineTo(0, 5);
}
{//run in a for loop for every enemy (i)
canvas.save();
canvas.translate(iWidth / 2, iHeight / 2);
canvas.rotate((float)Math.toDegrees(Math.atan2((oEnemies[i].getEnemyCenterY()-worldY)-user.getShipCenterY(), (oEnemies[i].getEnemyCenterX()-worldX)-user.getShipCenterX())));
canvas.drawPath(oBlipPath, oBlipPaint);
canvas.restore();
}
Чтобы дать небольшой контекст, пользователь - это игрок, который находится в центре экрана. oEnemies - это объекты, которые игрок должен сбивать как на экране, так и за его пределами.
То, что я пытаюсь сделать, это создать своего рода радар вокруг игрока. Крошечные стрелки, чтобы показать путь, чтобы уничтожить все объекты и завершить миссию.
Как я уже упоминал в моих предыдущих постах, я отлично разбираюсь в логике, но абсолютно ужасен в математике. Слава богу, что вы здесь, ребята, потому что эти контрольно-пропускные пункты являются убийцами, и я, вероятно, сдамся раньше, чем позже. Спасибо за помощь!
В любом случае, вернемся к вопросу. Перевод 20,20 действительно для отладки. Я пытался выяснить, что он делает. Прямо сейчас я вижу стрелки, но они выглядят так, как будто они вращаются вокруг оси в левом верхнем углу экрана с радиусом 20 пикселей. Они реагируют на координаты объекта, но, похоже, неправильно.
Я буду продолжать вертеться, но мой вопрос в том, как сделать так, чтобы ось вращения была в центре экрана и чтобы стрелки указывали на объекты, летающие вокруг? Чтобы быть точным, стрелки должны не только указывать на объекты, но и перемещаться вокруг радиуса вокруг аватара игрока в центре экрана.
Спасибо!