Вращение и движение с твердым телом в Bullet Physics

Я сделал твердое тело для игрока и пытался заставить твердое тело двигаться вместе с элементами управления игрока.

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

Мой прямой вопрос заключается в том, как мне переместить твердое тело игрока в направлении, в котором он смотрит.

Другие сведения:

  • Я действительно не хочу использовать кинематические тела, если в этом нет необходимости, в основном потому, что в данный момент они очень неудобны.

  • Я использую glfw3 для ввода


person Arko    schedule 26.03.2014    source источник


Ответы (1)


Удивительно, что вы не увидели, как это сделать после того, как вам действительно удалось приложить силы в статических направлениях к чему-то, что вы настроили поверх пули.

Да ладно, у тебя есть навык, чтобы понять это.

Здесь просто толчок в направлении (хе-хе), кхм. Просто возьмите вектор направления взгляда (который может быть определен камерой, 1-м или 3-м видом или даже чем-то еще...).
Поздравляю, этот вектор - ваша сила с коэффициентом k.

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

Затем боковые направления получаются путем поворота вектора лица на 90 градусов вокруг оси стояния (скорее всего, вертикальной). Вы можете получить это, просто поменяв компоненты местами и умножив один из них на -1. x,y,z становится y,-x,z

Чтобы вернуться назад, нужно всего лишь -x, -y, -z по вектору, обращенному лицом.

Таким образом, ваш ключ up привязан не к 0,1,0, а к facing_dir. Этот обращенный каталог можно изменить с помощью мыши или других элементов управления видом, например, цифровых клавиш 2,6,8,4. Или вы можете перемещаться вверх, влево, вправо, вниз и использовать w, a, s, d, как и все остальные, и использовать клавиши направления для поворота лицом. (+мышь)

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

person v.oddou    schedule 26.03.2014