ПроблемаТригонометрия на центрированную точку крепления
Я пытаюсь получить прицельные ракурсы, чтобы проследить за двигающийся спрайт, в то время как отслеживание спрайтов тоже двигается. Проблема заключается в том, с центром в точке якорной .. Как можно создать треугольники между ними
Например, если экран центр 0, 0 на .position
как можно создать треугольник между ними, если, например, позиция игрок -100,-100
и позиции противник 100,100
Я спрашиваю это, потому что мой трассировку только работает, если игрок находится в положении 0,0
как следующий фрагмент кода не выполняется.
//get position of enemy
CGPoint enemyPosition = enemy.position;
//get current aim angle, position, aim position of enemy
CGPoint currentPlayerPosition = player.position;
float adjacent = currentPlayerPosition.y + enemyPosition.y;
float opposite = currentPlayerPosition.x + enemyPosition.x;
смежно & напротив будет значение 0, если -100 игрок и +100 противник ..?
Так как же это изменить?
float newAngle = atan2f(opposite, adjacent);
newAngle = ((newAngle) * (180.0/M_PI));
Это было бы идеально, если позиция игроков x:0,y:0
Однако, если что-нибудь еще, это не работает. Пытаясь нарисовать треугольник между ними, играя в «фигары», жарит мой мозг!
Однако теперь это оставляет мне недостаток 270º. – Daniel
Не должно быть 'dx = enemyPosition.x - currentPlayerPosition.x' и' dy = enemyPosition.y - currentPlayerPosition.y', без 'fabs' , и 'angle = atan2 (dy, dx)'? – 0x141E
@ 0x141E Не могли бы вы дать мне точный вопрос, с которым я столкнулся в первую очередь, если вы поменялись местами? Использование абсолютов для получения разницы между числами работает для рисования треугольников между ними независимо от положения. – Daniel