Как сделать спрайт наведением мыши. XNA C # - PullRequest
2 голосов
/ 30 июля 2010

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

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

Ответы [ 2 ]

6 голосов
/ 17 августа 2010

На самом деле в вашем сообщении есть 2 вопроса.

Как сделать спрайт наведением мыши.XNA C #:

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

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

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);

Math.Atan2(Ydiff, Xdiff);

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

Приветствия,

TomHashNL

1 голос
/ 18 февраля 2013

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

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

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

...