我正在使用LWJGL OpenGL创建游戏。要移动播放器(宇宙飞船),我根据播放器的Y轴旋转方向移动X和Z:
float dx = distMoved * sin(toRadians(getRotY())));
float dz = distMoved * cos(toRadians(getRotY())));
这一切都很好,但是,对于向上移动,我使用下面的代码,这有点奏效:
float dy = distMoved * sin(toRadians(getRotX())));
问题是,无论我上下旋转,我的播放器似乎都向前移动了相同的量(X和Z),这意味着我的播放器可以朝上90度,并且仍然可以向X和Z移动。 / p>
在计算X和Z运动之前,我尝试从'distMoved'中减去dy,但这并不能提供正确的运动。
有人知道我应该怎么做吗?
答案 0 :(得分:0)
dx
和dz
都必须乘以cos(toRadians(getRotX())))
。