コメントの説明に基づいて、あなたが見ているポイントの x 座標 ( centerx
) を船の位置に合わせて変更する必要があります。したがって、それはおそらく と同じはずship3dPos.x
です。
まだ解明しなければならないことの 1 つは、船とエイリアンの Z 深度です。今のところ、それらは等しいと仮定します。その場合centerz
、その深さになります。それらが等しくない場合は、もう少し計算を行う必要があり、centery
以下の答えはわずかに変わります.
宇宙人に向かって「上」を見たいと言うので、より大きな y 値が必要ですship3dPos.y
。「lookAt」ポイントは視線に沿った任意のポイントになる可能性があるため、(深さが同じであると仮定して)ship3dPos.y+1.0
機能するか、またはエイリアンの y 位置として 500 の推定値に満足している場合に注意してください。あなたもそれを使うことができます。基本的に、深さが同じで、エイリアンの y 位置が船の位置よりも大きい限り、より大きなものを使用できますship3dPos.y
。
上記の仮定では、「lookAt」ベクトル (centerx、centery、centerz) は次のようになります。
ship3dPos.x, ship3dPos.y+1.0, ship3dPos.z
しかし、gluLookAt() 呼び出しには、注意が必要なコンポーネントがもう 1 つあります:up
ベクトルです。ベクトルを (0,1,0)のままup
にしておくと、画面を直接見ることになります。あなたが本当に望むのは、画面の平面 (xy 平面) に沿って見ることだと仮定します。この場合up
、z 方向にある必要があり、アップ ベクトルは次のようになります。
0.0f, 0.0f, 1.0f
それを試してみて、あなたが思う通りに動作するかどうかを確認してください。