私は現在、JOGLを使用して最初のFPSゲームの設計に取り組んでいます。(OpenGLのJavaバインディング)。
これまでのところ、「ワールド」(一連のキューブ)とプレーヤーモデルを生成することができました。プレーヤーとキューブの間の衝突検出がうまく機能しています。
今、私は銃を追加しようとしています。銃のモデルを正しく描画し、プレーヤーのモデルにロードしています。私が実装しようとしている最初の銃はレーザー銃です。これは、狙っているものすべてに瞬時の見通し内レーザーを発射します。敵モデルの実装に取り組む前に、レーザーと壁の間の衝突検出を機能させたいと思います。
私のレーザーは、現在、一連の小さな立方体によって次々と描かれています。最初の立方体はプレイヤーの銃の端に描画され、次にそこから継続的に描画されます。アイデアは、何か、つまり世界の立方体との衝突が検出されるまで、レーザーの立方体を描き続けることでした。
私は世界の立方体の位置を知っています。問題は、キャラクターモデルを描画するためにglMatrixPushを呼び出さなければならないことです。次に、このモデルビュー内にレーザーが描画されます。古い座標系を失ったことを意味します。つまり、あるシステムで世界を描き、次に別のシステムでレーザーを描きます。このプレーヤーマトリックス内で、カメラの回転方法とすべてを同期させるために、glRotateとglTranslateを数回呼び出しました。次に、この新しいシステムのz軸に沿って平行移動することにより、レーザーが構築されます。
私の問題は、これらすべての変換を通じて、主にカメラの回転が原因で、レーザーがマップ座標系のどこに存在するのかわからなくなったことです。
誰かがこの問題を解決する方法を知っていますか、または何かアイデアがありますか?レーザーの新しい座標をマップの古い座標に変換する方法が必要だと思いますが、レーザーに対して行われたすべての変換を元に戻す方法がわかりません。私が気付いていないこの種の問題を処理するために、OpenGLによって提供されるいくつかの機能もあるかもしれません。