Расчет гравитации в XNA - PullRequest
       6

Расчет гравитации в XNA

3 голосов
/ 21 апреля 2011

Хорошо, поэтому я пытаюсь создать свой собственный физический движок для игры 3D XNA, и у меня возникают проблемы с подсчетом того, на сколько я должен двигать свой объект для гравитации.

Таймер игры XNA срабатывает каждые 16 миллисекунд, поэтому после некоторых вычислений и использования моей гравитационной скорости 9,81 м / с вы можете увеличить скорость объекта, обладающего гравитацией, на:

0,15696 метров / 16 миллисекунд
- в основном каждый вызов обновления должен увеличивать объект на 0,15696 метров

Вопрос в том, как мне конвертировать 0,15696 метра в пиксели. Очевидно, что если я просто использую соотношение 1: 1, объект будет двигаться только 9,81 пикселей в секунду. Что на самом деле не симулирует гравитацию: P Кто-нибудь знает, как я могу определить, на сколько пикселей я должен перемещать объект?

Спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 21 апреля 2011

Хотя 2d игровой разработчик в большей степени ориентирован на пиксели, трехмерные игровые разработки касаются не пикселей для такого рода вещей, а единиц. Размер блока совершенно произвольный.

Как правило, у вас есть вектор скорости, величина которого эквивалентна метрам (или футам или ??) в секунду, по которым движется ваш объект. Таким образом, положение обновляется в каждом кадре путем добавления этой скорости * прошедшего времени с последнего кадра (16,6666 мс). Ускорение от силы тяжести добавляется к вектору скорости таким же образом:

Vector3 gravity = Vector3.Down * 9.81f;


//in the update loop
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;//0.01666667 (or 16.67 ms) @ 60FPS
velocity += gravity * elapsed; 
position += velocity * elapsed;

В этом примере я произвольно установил, что 1 единица xna == 1 метр.

1 голос
/ 21 апреля 2011

Вы просто должны выяснить, насколько велика «область» вашего экрана; тогда его простое масштабирование. Если у вас есть двухмерное представление спутника на орбите Земли, то ваши пиксели "Y" представляют землю на спутник (приблизительно 35 000 метров).

Используйте свои уравнения из классической физики (http://en.wikipedia.org/wiki/List_of_equations_in_classical_mechanics),, а затем просто масштабируйте реальные размеры на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...