计算球击中目标所需的初始速度

Ala*_*anF 4 c# physics unity-game-engine game-physics

当以下是所有常数时,如何获得子弹击中目标所需的初始速度

time to target
gravity
initial position of the ball and the target
radius of the ball
Run Code Online (Sandbox Code Playgroud)

我在Unity 3D中使用c#为代码做了一些例子.我不是要求代码,我只是想知道采取什么步骤来做这件事(物理方面).

Fun*_*onR 5

您的问题可以使用运动学来解决.你需要了解一些关于物理学的知识,但这一切都非常简单.

  1. 当子弹发射时,作用在子弹上的唯一力就是重力.
  2. x轴上的加速度为0.
  3. y轴上的加速度将是重力.

让我们来看看我们所知道的:

  • 时间
  • 重力
  • distance_to_target

要计算你需要这些方程式:

VelocityFinal_x = VelocityInitial_x

FinalDistance_x - InitialDistance_x = VelocityInitial_x * time

VelocityFinal_y = VelocityInitial_y + gravity * time
Run Code Online (Sandbox Code Playgroud)

只需重新排列第二个等式即可找到 VelocityInitial_x

请注意,我们不需要使用z轴.除非风在飞行途中移动子弹,否则不要触摸z轴.

确保在子弹发射的瞬间进行一次这些计算,不要在游戏的每一帧都进行.