Есть ли способ проверить, применяется ли сила к объекту?

#c# #unity3d #math #vector #game-physics

#c# #unity3d #математика #вектор #игра-физика

Вопрос:

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

Тогда мой вопрос: есть ли способ проверить, движется ли этот объект в этом общем направлении тяги?

Комментарии:

1. Что вы имеете в виду под «иметь эту силу в пределах ее вектора скорости»? Силы не находятся «внутри» векторов скорости. Они даже не измеряются в одних и тех же единицах измерения… Вы говорите, что вам нужно добавлять скорость к вектору до тех пор, пока он не будет иметь хотя бы некоторую скорость в определенном направлении?

2. @Ruzihm Извините, вы правы, я отредактирую свой вопрос. Я имею в виду, что если вектор скорости объекта равен C, постоянная скорость равна B, а A — разница, как мне найти, существует ли уравнение A B = C? Это понятнее?

3. Базовая математика, C - (A B) == 0

Ответ №1:

Если скалярное произведение между направлением, в котором действует сила «тяги», и текущей скоростью больше 1, то скорость движется в направлении тяги.

 Vector3 pullDirection;
Vector3 currentVelocity;

bool isMovingInPullDirection = Vector3.Dot(pullDirection, currentVelocity) > 0;
  

Комментарии:

1. Это работает до тех пор, пока я не применю силу, скажем, перпендикулярно постоянной скорости. Затем проверка завершается неудачей.

2. На самом деле не имеет значения, какова сила, как следует из вашего разъяснения, только скорость объекта. Если постоянная скорость объекта равна (1,0,0), а объект движется со скоростью (1,0,0), и вы применяете силу (0,0,1), тогда скорость становится чем-то вроде (1,0,0.5), и она возвращает true, как и должно быть, правильно?

3. Хм, я думаю, мое разъяснение было неправильным, тогда lol. Ну, подумайте об этом так; гравитация — это постоянная скорость, а объект — космический корабль, способный двигаться в любом направлении. Перемещение космического корабля в любом направлении не должно изменять гравитацию, но гравитация должна быть всегда. Мне просто нужно знать, как определить, есть ли она.

4. @Bishop Гравитация — это не скорость, но я думаю, что понимаю, к чему вы клоните. Попытался переформулировать вопрос. Надеюсь, это поможет.

5. Извините, у меня возникли проблемы с объяснением моего вопроса, лол. Моя последняя аналогия была не совсем правильной. Сила должна прекратиться, когда объект движется к источнику (в данном случае к источнику гравитации). Я немного перефразировал свой вопрос. Не видел, что вы сделали, пока я не закончил. Спасибо за всю помощь в любом случае.