Автомобиль / Автомобиль дрейфует вокруг углов в гоночной игре - PullRequest
4 голосов
/ 21 августа 2011

Я реализовал довольно простую систему движения автомобиля:

_velocity.x = Math.cos(angleAsRadians) * _speed;
_velocity.y = Math.sin(angleAsRadians) * _speed;

_position.x += _velocity.x;
_position.y += _velocity.y;

Вы двигаетесь, увеличивая / уменьшая скорость, и поворачивая, увеличивая / уменьшая угол.

Как добавить дрейфтак что чем быстрее я еду, тем больше я дрейфую?Я не могу понять это, и нет никаких других источников, способных Google.

Идеи?

Ответы [ 2 ]

2 голосов
/ 24 августа 2012

Физика автомобиля немного сложнее.Вам нужно реализовать физический движок, основанный на скольжении.

Эта статья объясняет процесс довольно хорошо.Чтобы заставить его работать должным образом, необходимо учитывать вращение колес и разницу сил, когда шина движется в одном направлении, а земля движется в другом направлении.Оказывается, две силы, одна перпендикулярная оси колеса, а другая движется вбок в отношении автомобиля.

Конечно, это много работы, и когдадля всего, что связано с играми, общим правилом является , если оно выглядит хорошо, то хорошо .Таким образом, можно получить некоторый пробег и идеи из того, как устроена настоящая физика, и взять несколько кусочков правильного решения, чтобы создать правдоподобное факсимиле реальной сделки.

0 голосов
/ 21 августа 2011

Определите «коэффициент дрейфа», например, расстояние, равное 0,5% от скорости и времени.

_position.x += (1+coeff)*_velocity.x; ->  _position.x += (1+0.005)*_velocity.x;
_position.x += (1+coeff)*_velocity.y; ->  _position.y += (1+0.005)*_velocity.y;

Так что в данном случае оно является аддитивным и основано на скорости.

Этот коэффициент также может быть переменным на основе чего-то, например, радиуса трассы, любых условий гонок (скользких и т. Д.), Различающихся между осями x и y, и рандомизированных для плюс или минус.

...