void RotateLeft(float rotationAngle) { var matrix = RotationMatrices.GetLeftHandMatrix(1, 0, 1, rotationAngle, 0f, 0f); faceDir = transform.forward; faceDir.z *= -1; faceDir = MatrixDotVector(matrix, faceDir); faceDir.z *= -1; transform.forward = faceDir; }
void RotateUp(float rotationAngle) { faceDir = transform.forward; Vector3 projFaceDir = faceDir; projFaceDir.y = 0f; float angle = GetRotationAngle(new Vector3(0, 0, -1), projFaceDir) * Mathf.Deg2Rad; var matrix = RotationMatrices.GetLeftHandMatrix(1, 0, 1, -angle, rotationAngle, angle); //var matrix1 = RotationMatrices.GetLeftHandMatrix (1, 0, 1, angle, 0, 0); //var matrix2 = RotationMatrices.GetLeftHandMatrix (1, 0, 1, 0, rotationAngle, 0); //var matrix3 = RotationMatrices.GetLeftHandMatrix (1, 0, 1, 0, 0, -angle); faceDir.z *= -1; faceDir = MatrixDotVector(matrix, faceDir); //faceDir = MatrixDotVector (matrix1, faceDir); //faceDir = MatrixDotVector (matrix2, faceDir); //faceDir = MatrixDotVector (matrix3, faceDir); faceDir.z *= -1; transform.forward = faceDir; }