2015-09-09 9 views
0

ПроблемаТригонометрия на центрированную точку крепления

Я пытаюсь получить прицельные ракурсы, чтобы проследить за двигающийся спрайт, в то время как отслеживание спрайтов тоже двигается. Проблема заключается в том, с центром в точке якорной .. Как можно создать треугольники между ними

Например, если экран центр 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 Однако, если что-нибудь еще, это не работает. Пытаясь нарисовать треугольник между ними, играя в «фигары», жарит мой мозг!

ответ

0
float adjacent = fabs(currentPlayerPosition.y - enemyPosition.y); 
float opposite = fabs(currentPlayerPosition.x - enemyPosition.x); 

я нуждался в абсолюте, когда я запрограммировал его, я сделал это от центра экрана .. Перечитывая мой вопрос помог мне ответить на это .. Я думаю, что мне нужна резиновая утка!

if (currentPlayerPosition.x > enemyPosition.x) { 
    opposite = opposite * -1; 
} 
if (currentPlayerPosition.y > enemyPosition.y) { 
    adjacent = adjacent * -1; 
} 

Устраняет проблему.

+0

Однако теперь это оставляет мне недостаток 270º. – Daniel

+0

Не должно быть 'dx = enemyPosition.x - currentPlayerPosition.x' и' dy = enemyPosition.y - currentPlayerPosition.y', без 'fabs' , и 'angle = atan2 (dy, dx)'? – 0x141E

+0

@ 0x141E Не могли бы вы дать мне точный вопрос, с которым я столкнулся в первую очередь, если вы поменялись местами? Использование абсолютов для получения разницы между числами работает для рисования треугольников между ними независимо от положения. – Daniel

Смежные вопросы