根据您评论中的说明,您希望您所看到的点的 x 坐标 ( centerx
) 随船的位置而变化。所以这应该和ship3dPos.x
.
我们仍然需要弄清楚的一件事是飞船和外星人的 z 深度。我将假设它们现在是相等的,在这种情况下centerz
将是那个深度。如果它们不相等,那么我们需要做更多的数学运算,centery
下面的答案会略有变化。
你说你想“向上”看外星人,所以你需要一个比 更大的 y 值ship3dPos.y
。请记住,“lookAt”点可以是视线上的任何点,因此(再次假设深度相同)ship3dPos.y+1.0
将起作用,或者如果您对估计为 500 作为外星人的 y 位置感到满意你也可以使用它。基本上,只要深度相同并且外星人的 y 位置大于船的位置,您就可以使用任何大于ship3dPos.y
.
根据上述假设,您的“lookAt”向量 (centerx, centery, centerz) 将是:
ship3dPos.x, ship3dPos.y+1.0, ship3dPos.z
但是在您的 gluLookAt() 调用中还有一个组件需要注意:up
向量。如果我们将up
向量保留为 (0,1,0),您仍将直接查看屏幕。我将假设您真正想要的是沿着屏幕的平面(xy 平面)看,在这种情况下up
应该在 z 方向,向上的向量是:
0.0f, 0.0f, 1.0f
试一试,看看它是否符合您的要求。