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

时间:2014-07-30 21:07:38

标签: c# unity3d physics game-physics

当以下所有常量

时,如何获得子弹击中目标所需的初始速度
time to target
gravity
initial position of the ball and the target
radius of the ball

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

2 个答案:

答案 0 :(得分:5)

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

  1. 当子弹发射时,作用在子弹上的唯一力就是重力。
  2. x轴上的加速度为0。
  3. y轴上的加速度将是重力。
  4. 让我们来看看我们所知道的:

    • 时间
    • 重力
    • distance_to_target

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

    VelocityFinal_x = VelocityInitial_x
    
    FinalDistance_x - InitialDistance_x = VelocityInitial_x * time
    
    VelocityFinal_y = VelocityInitial_y + gravity * time
    

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

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

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

答案 1 :(得分:0)

关于弹丸轨迹的漂亮article on Wiki,详细解释二维情况(如果你定义一个平面包括射弹的起点,目标点和重力矢量,3D情况可以很容易地简化为2D)。

enter image description here

要从(0,0)射击时射击范围x和高度y的目标,并且以初始速度v射击所需的射击角度 theta

enter image description here