Я пытаюсь реализовать в моей игре функцию, которая будет автоматически блокировать цель и бросать снаряд так, чтобы он идеально падал на нее.Я сделал математику, чтобы вычислить параболу из Player 1 -> Target, где бы ни находились их позиции, но понял, что хотел использовать физическую систему Unity вместо того, чтобы мяч шел по траектории.
Бросок скорость является постоянным, игрок 1 и цель являются движущимися объектами, но их позиции будут зарегистрированы один раз только для вычисления начального угла броска.
Я считаю, что эту формулу мне нужно использовать:
Но как я могу применить ее для моего Игрока и Цели, имеющих 3D-координаты?
Вот псевдокод того, что я пытался написать в Unity, чтобы сделать его более читабельным.
float velocity = 100f;
float g = Physics.gravity;
Transform x = Target.position.x - Player.position.x;
Transform y = Target.position.z - Player.position.z;
double theta;
theta = **big formula using the values above**
И после этого я не знаю, как использовать это значение для добавления силы кснаряд.Я хотел использовать AddForce (x, y, z, ForceMode.Impulse);но я явно не могу использовать начальный угол здесь, только значения x и y.Использование RigidBody.velocity = Vector3 (vx, vy, vz);дает мне ту же проблему.
Я считаю, что упускаю что-то тривиальное, но я действительно застрял в этом.Кто-нибудь сможет помочь?