あなたのコメントにしたいことをするには、以前のyoueプレーヤーの向きも知る必要があります。 実際には、プレイヤーの位置と向きに関するすべてのデータ(およびゲーム内のほとんどすべてのデータ)を4x4マトリックスに保存することをお勧めします。これは、3行3列の回転行列に4列目と4行目を「追加」し、余分な列を使用してプレーヤーの位置に関する情報を格納することによって行われます。これの背後にある数学(同次座標)は、OpenGLとDirectXの両方で非常に単純で非常に重要です。位置
のために行列と3Dベクトルを宣言し、お使いのプレーヤーと敵のクラスでは)
1:私はあなたがこれを行うことができ、GLMを使用して、あなたの敵に向けてプレーヤーを回転させるために、今、あなたにこの偉大なチュートリアルhttp://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/ を提案します
glm::mat4 matrix;
glm::vec3 position;
2)
を行い、プレイヤーの方に敵を回転させるように
player.matrix = glm::LookAt(
player.position, // position of the player
enemy.position, // position of the enemy
vec3(0.0f,1.0f,0.0f)); // the up direction
3)で敵に向けて回転させますあなたは行列のすべてを保存したい場合は
は、
vec3 position(){
return vec3(matrix[3][0],matrix[3][1],matrix[3][2])
}
変数としてではなく関数としての位置を宣言し、すべてに
player.matrix = glm::LookAt(
player.position(), // position of the player
enemy.position(), // position of the enemy
vec3(0.0f,1.0f,0.0f)); // the up direction
回転行列の場合、方向ベクトル(例:軸)**と角度が必要です。あなたは何回転しているのですか? – 6502
私はこれをやりたい: Vec3 dirToEnemy =(Enemy.Position - Player.Position).normalize(); Player.Matrix.makeRotationDir(dir); Player.Attack(); – UfnCod3r
@ 6502:いいえ、回転行列の場合は、3つのベクトル(x、y、z)を使用することもできます – SigTerm