Я знаю что вопрос стар как мир, но все же...
Я собирался делать прицепленый к центру круг и двигать мир, то есть у круга было бы константные координаты для рисования + относительные координаты нахождения в мире (разные были бы значения), так вот, нашел я камеру в flame там почти все это сделано.
Поворот дула! Скрин:
я сделал поворот дула для изначального принципа, получилась вот такая хрень:
double getRotation(double x, double y) {
double rad = 0;
double difY = (y - _cursorY) < 0 ? (y - _cursorY) * -1 : (y - _cursorY);
double difX = (_cursorX - x);
if (y < _cursorY) {
rad = atan2(difY, difX);
} else {
rad = pi - pi - atan2(difY, difX);
}
return rad;
}
x,y
- это координаты центра круга
_cursorX,_cursorY
- это координаты курсора
+ ко всему надо было довернуть круг с стрелкой на pi/2.
Вот... пока камера находится в рамках начало мира, то есть координаты камеры и мира равны все работает, но если сместить камеру то начинаются проблемы, надеюсь понятно какие...
координаты центра круга (относительно окна, canvas-а, камеры) не нашел отладкой, а если они есть где то в глубине филдов класса то они будут недоступны из класса круга или просто недоступны (типа приватные).
Как получить поворот в таких условиях? наверняка как-то легко это делается какими нибудь средствами движка, но я не нашел