このコードを使用してオブジェクトが特定の位置を指すように、回転行列のヨーを設定したい
Vector3 dist = transform().position() - mPlayerTarget;
transform().rotationZ(atan2(dist.x(), dist.y()));
これは、回転が逆であることを除いて、正しい結果を生成します。そのため、ターゲット ポイントをたどるのではなく、そこから離れて回転します。
Vector3 dist = transform().position() - mPlayerTarget;
transform().rotationZ(-atan2(dist.x(), dist.y()));
(-atan2 を使用) オブジェクトはターゲットに追従しますが、右に 90 度オフセットされます。rotationZ の実装は次のようになります。
float cz = cosf(rotation);
float sz = sinf(rotation);
matrix.mMatrix[0] = cz;
matrix.mMatrix[1] = sz;
matrix.mMatrix[2] = 0;
matrix.mMatrix[3] = -sz;
matrix.mMatrix[4] = cz;
matrix.mMatrix[5] = 0;
matrix.mMatrix[6] = 0;
matrix.mMatrix[7] = 0;
matrix.mMatrix[8] = 1;
iOS OpenGL ES 2.0 を使用しています。ここで何かが根本的に間違っているようです。最初のバージョンで正しい結果が得られるはずですか? 他のすべての変換は適切に機能しているようです。ここで何が問題になる可能性がありますか?エラーを探す場所がわかりません...