我想设置旋转矩阵的偏航,以便使用此代码将对象指向特定位置
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。这里似乎存在根本性错误,第一个版本应该是产生正确结果的版本?所有其他转换似乎都可以正常工作。这里有什么问题?我不知道在哪里寻找错误...