总结一下:
- 当玩家静止并旋转时,摄像头在旋转约180度后跳回到原始位置
- 在玩家旋转一点后,场景“跳跃”,然后向前移动
- 当向前移动并同时旋转时,旋转看起来行为正常
我猜想spin()
函数是罪魁祸首,但是播放器模型旋转得很好;是“照相机”不能正常工作,所以它可能在我的display()
代码中。我不知道什么地方出了问题。
这里有一个gif,可以很容易地显示正在发生的事情。http://i.imgur.com/eGCuUN7.gifv
下面是相关代码:
void Player::spinLeft()
{
direction += SPIN_SPEED;
double radians = direction / 180 * 3.141592654;
xSpeed += cos(radians);
ySpeed += sin(radians);
glutPostRedisplay();
}
void Player::spinRight()
{
direction -= SPIN_SPEED;
double radians = direction / 180 * 3.141592654;
xSpeed += cos(radians);
ySpeed += sin(radians);
glutPostRedisplay();
}
void Player::moveForward()
{
double radians = direction / 180 * 3.141592654;
xSpeed = cos(radians);
ySpeed = sin(radians);
double nextX = x + xSpeed*MOVE_SPEED;
double nextY = y + ySpeed*MOVE_SPEED;
if (!gMaze.insideWall(nextX, nextY, size))
{
x += xSpeed*MOVE_SPEED;
y += ySpeed*MOVE_SPEED;
}
glutPostRedisplay();
}
标题:
第一个
1条答案
按热度按时间xj3cbfub1#
您的
spinLeft
和spinRight
不正确。您只需要:当你向前走的时候,它是正确的,因为你在那里就是这样做的。