Чтобы запустить мяч точно в направлении, указанном вентилятором, вам нужно перезаписать любую текущую скорость, которая есть у шара. Для этого вы можете просто присвоить мячу Rigidbody.velocity
. В противном случае мяч все равно будет поддерживать любую лево-правую скорость, и он может начать движение под углом
Вы можете узнать направление вращения вентилятора с помощью fan.transform.forward
, и если вы хотите немедленно отправить шар, летящий в этом точном направлении, то вы можете просто установить скорость непосредственно, используя это время, как бы быстро вы не хотели это идти:
Rigidbody ballRB; // given
GameObject fan; // given
float fanLaunchSpeed; // given
ballRB.velocity = fanLaunchSpeed * fan.transform.forward;
Если вы также хотите добавить несколько градусов возвышения, вы можете умножить это направление на Quaternion.AngleAxis(angle, fan.transform.right)
:
Rigidbody ballRB; // given
GameObject fan; // given
float fanLaunchSpeed; // given
float angle; // given, measured in degrees
Vector3 launchDirection = Quaternion.AngleAxis(angle, fan.transform.right)
* fan.transform.forward;
ballRB.velocity = fanLaunchSpeed * launchDirection;