当以下所有常量
时,如何获得子弹击中目标所需的初始速度time to target
gravity
initial position of the ball and the target
radius of the ball
我在Unity 3D中使用c#为代码做了一些示例。我不是要求代码,我只是想知道采取什么步骤(物理方面)。
答案 0 :(得分:5)
您的问题可以使用Kinematics解决。你需要了解一些关于物理学的知识,但这一切都非常简单。
让我们来看看我们所知道的:
要计算你需要这些方程式:
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)。
要从(0,0)射击时射击范围x和高度y的目标,并且以初始速度v射击所需的射击角度 theta :