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

标签 c# unity3d physics game-physics

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

time to target
gravity
initial position of the ball and the target
radius of the ball

我正在 Unity 3D 中使用 C# 作为代码来做几个例子。我不是要代码,我只是想知道要采取什么步骤来做到这一点(物理学方面)。

最佳答案

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

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

让我们检查一下我们所知道的:

  • 时间
  • 重力
  • 到目标的距离

要进行计算,您需要这些方程式:

VelocityFinal_x = VelocityInitial_x

FinalDistance_x - InitialDistance_x = VelocityInitial_x * time

VelocityFinal_y = VelocityInitial_y + gravity * time

只需重新排列第二个方程即可找到 VelocityInitial_x

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

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

关于c# - 计算球击中目标所需的初始速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046964/

相关文章:

c# - 使用 EASYUI 和 Json 创建数据网格,其中数据类型为 Boolean

c# - 当文件被不同的进程删除时,文件流会发生什么?

unity3d - 使用新输入系统损坏的按钮

javascript - 如何确定一个点当前位于椭圆路径的哪一半?

python - 球弹跳物理学,系统似乎获得能量(弹得更高)

android - box2d (andengine gles2) PhysicsConnector 语法错误

c# - C# 中的 std::string?

c# - WPF:从文本框中获取 "wrapped"文本

arrays - 如何将 Json 数组作为统一字段传递给 WWWform

ios - 如何提交仅 64 位 [降级] iOS 应用程序更新