Как сделать так, чтобы спрайт указывал на мышь. XNA С#

Если вы посмотрите на эту диаграмму текст ссылки, мне нужно найти угол A зная только длины всех сторон прямоугольного треугольника.

Я не знаю триггера и мне нужна помощь.


person redcodefinal    schedule 30.07.2010    source источник


Ответы (2)


На самом деле в вашем посте 2 вопроса.

Как сделать так, чтобы спрайт указывал на мышь. XNA С#:

Вам нужно будет рассчитать направление между положением спрайта и положением мыши. Это можно сделать с помощью функций тригонометрии. В данном случае: Арктангенс2

Итак, воспользуемся математической библиотекой:

MouseState mouseState = Mouse.GetState();
Math.Atan2((double)mouseState.Y - sprite.Y, (double)mouseState.X - sprite.X); //this will return the angle(in radians) from sprite to mouse.

В вашем примере тригонометрии вы увидите, что эти значения на самом деле таковы:

Math.Atan2(BC, AC);

or

Math.Atan2(Ydiff, Xdiff);

Надеюсь, это поможет =D

Ваше здоровье,

TomHashNL

person TomHashNL    schedule 17.08.2010

Я нашел свое окончательное решение:

Vector2 direction = targetPosition - currentPosition;
direction.Normalize();
float rotationInRadians = (float)Math.Atan2((double)direction.Y, 
                             (double)direction.X) + MathHelper.PiOver2;

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

person Tyler Forsythe    schedule 18.02.2013