gpt4 book ai didi

c++ - 旋转对象以指向鼠标位置

转载 作者:行者123 更新时间:2023-11-28 07:13:56 25 4
gpt4 key购买 nike

我有一个宇宙飞船的图像,我想旋转它以指向鼠标位置。要计算我必须旋转的角度,我使用以下代码:

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 秒左右,然后不会正确指向鼠标。我的代码有什么问题吗?如果您需要更多代码,请发表评论,我不确定您需要多少信息。

最佳答案

您需要将序列放入渲染函数中:

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

因为匹配的 pushMatrixpopMatrix 之间的每个 block 都是独立的,所以您在更新中的代码是一个 noop

关于c++ - 旋转对象以指向鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com