
Я пытаюсь чтобы заставить резиновую утку двигаться по поверхности круглого «мира» - я должен иметь возможность вращать утку вокруг ее локальной оси Y, а затем перемещать ее вперед, чтобы утка следовала за поверхностью мира.
По сути, это управление танком для утки на поверхности сферы.
Я могу вращать утку вокруг оси Y, когда она находится вверху или внизу мира, а затем толкать ее вперед по вложенной оси X.
Проблема в том, что, когда утка находится вдали от полюсов, нажатие влево и вправо приводит к тому, что утка вращается вокруг мира, а не поворачивается вокруг своей локальной оси Y. (а затем двигаться вперед (вокруг земного шара) относительно утка).
В настоящее время я пытаюсь применить поворот к утке, прежде чем переводить ее с помощью изображенного кода, но, похоже, мое нежелательное поведение не изменилось... =/
BeginMode3D(camera);
DrawModel(world, worldPos, 1.0f, WHITE); // Draw world
rlPushMatrix(); // DUCK MATRIX Y
rlRotatef(duckOrbitRotationY, 0.0f, 1.0f, 0.0f);
// rlTranslatef(0.0f, 1.0f, 0.0f); // Swapped the order of the rotation, then translate
// rlPopMatrix();
rlPushMatrix(); // DUCK MATRIX X
rlRotatef(duckOrbitRotationX, 1.0f, 0.0f, 0.0f);
rlPushMatrix(); // DUCK MATRIX Z
rlTranslatef(0.0f, 1.0f, 0.0f);
//rlRotatef(duckOrbitRotationY, 0.0f, 1.0f, 0.0f);
// rlRotatef(duckOrbitRotationZ, 0.0f, 0.0f, 1.0f);
DrawModel(model, duckPos, 1.0f, WHITE); // Draw duck
rlPopMatrix();
rlPopMatrix();
rlPopMatrix(); // END DUCK MATRIX
Подробнее здесь: https://stackoverflow.com/questions/793 ... pace-using
Мобильная версия