Повернуть объект так, чтобы он указывал на положение мыши

У меня есть изображение космического корабля, который я хочу повернуть, чтобы указать на положение мыши.
Чтобы вычислить угол, который я должен повернуть, я использую следующий код:

void CinderGaemApp::CalculateAngleBetweenMouseAndObject()
{
float deltaY = mouseLoc_.y - 10; //hardcoded y coordinate of the tip of the spaceship
float deltaX = mouseLoc_.x - 0; //hardcoded x coordinate of the tip of the spaceship

angleInDegrees_ = atan2(deltaY,deltaX) * 180 / 3.141;
}

После этого я обновляю свой объект игрока:

void Player::update(float degree)
{
gl::pushMatrices();
gl::translate(20,20);
gl::rotate(degree);
gl::translate(-20,-20);
gl::popMatrices();
}

Тогда я рисую это. Но моя проблема в том, когда я использую gl::popMatrices()изображение не движется вообще. Если я удалю gl::popMatrices()изображение сначала вращается в течение 2 секунд или около того, а затем не корректно указывает на мышь. Что-то не так с моим кодом? Пожалуйста, прокомментируйте, если вам нужно больше кода, я не совсем уверен, сколько информации вам нужно.

0

Решение

вам нужно поместить последовательность в вашу функцию рендеринга:

void Player::render()
{
gl::pushMatrices();
gl::translate(position.x, position.y);
gl::translate(20,20);
gl::rotate(my_degree);
gl::translate(-20,-20);
// do other render operations
gl::popMatrices();
}

с обновлением просто будучи

void Player::update(float degree)
{
my_degree=degree;
}

потому что каждый блок между соответствием pushMatrix а также popMatrix не зависит, так что код, который вы имели в своем обновлении, был пустяком

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]