作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经制造了一把锤子,并且我想快速旋转锤子以在按下特定键盘时产生打击。
我已经使用计时器功能来实现此目的。现在,当我按下特定的键盘时,锤子可以旋转360度,我的目标是将锤子旋转90至-90度。
我的代码:
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr++; //the default angle is 0
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
}
}
void specialkey(unsigned char key, int x, int y)
{
case 't':
stopRotation = true;
glutTimerFunc(10,weaponController,0);
break;
case 'T':
stopRotation = false;
break;
}
我怎样才能做到这一点?感谢您的帮助!
最佳答案
如果zr
是锤子的旋转,那么我会看到这样的情况:
int zr=0,dzr=+1; // might be a float I do not know as you did not share
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr+=dzr; //the default angle is 0
if (zr>+90){ dzr=-1; zr=+90+dzr; }
if (zr<-90){ dzr=+1; zr=-90+dzr; }
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
} else { zr=0; dzr=+1; }
}
因此
dzr
就是旋转的方向,在+/- 90度障碍物的每个交叉点上反转。当不使用锤子时,其位置和方向将重置为开始条件。
关于c++ - 如何在OpenGL中旋转一定范围内的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64288386/
我是一名优秀的程序员,十分优秀!