Преобразование вектора для присоединения к дополнительному вектору с помощью ThreeJS - PullRequest
0 голосов
/ 26 апреля 2020

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

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

В настоящее время когда игрок ударяется о стену, независимо от угла, танк неизменно останавливается мертвым.

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

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

На ФИГ. В танк врезается в стену, и его общая скорость достигает 0.

. C, танк отрывается от стены, и его общая скорость уменьшается лишь на небольшое количество.

Я понял, что мне нужно как-то объединить вектор скорости танка со стеной или mal vector, чтобы получить скорректированный вектор, но я пытаюсь изобразить это математически / программно.

Я пытался использовать: tank.velocity.multiply(wallFaceNormal); (оба tank.velocity и wallFaceNormal равны Vector3 объекты.) но это, кажется, работает, как задумано, только когда стена находится под углами 0, 90, 180 или 270.

Tank problem diagram

1 Ответ

0 голосов
/ 27 апреля 2020

, так как танк не будет прыгать или летать, у вас все в порядке с 2D-системой для расчета?

я нашел ссылку, описывающую физику машины, которая врезается в кирпичную стену solid.

http://colgatephys111.blogspot.com/2017/12/guardrail-lessens-force-of-impact.html

надеюсь, что это поможет вам немного!

edit: так, из любопытства я спросил по телефону у физика-теоретика о вашей проблеме.

вам нужно решить две отдельные задачи: 1. P1, какова скорость v в то время как бить стену? 2. P2, какой новый угол у vehicel?

P2 должен быть довольно простым, учитывая, что ваш танк адаптирует угол стены, вам нужно только рассчитать, в каком направлении стена «указывает».

P1 в физике, мы будем говорить о сниженной силе, а не скорости, но при условии постоянного ограничения силы F1 (например, вашего двигателя), приводящей к постоянной максимальной скорости, и с данной силой стена имеет на vehicel F2

v = F1
v' = F1'
F1' = F1 - F2

я думаю https://www.thoughtco.com/what-is-the-physics-of-a-car-collision-2698920 объясняет, что делать

...