问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

游戏中是如何模拟跳跃或抛射的

创作时间:
作者:
@小白创作中心

游戏中是如何模拟跳跃或抛射的

引用
1
来源
1.
https://vrast.cn/posts/17525/

在游戏中实现角色的跳跃和抛射效果,不仅需要精美的画面和流畅的操作,更需要精确的物理模拟。本文将从数学和物理的角度,深入探讨游戏开发中如何运用速度位移方程和匀变速直线运动方程,来实现角色的跳跃和抛射效果。

速度位移方程与玩家的跳跃

在数学领域,玩家角色的跳跃过程可以通过速度与位移方程来描述。在垂直方向上的位移可以使用以下公式:

$$
v^{2} = v_0^{2} + 2as
$$

在游戏设计过程中,通常会对玩家的跳跃能力进行设定。如果已知跳跃的高度,可以很方便地计算出玩家所需的跳跃初速度 $v_0$:

$$
v_0 = \sqrt{- 2as} = \sqrt{-2 \times Physics.gravity.y \times jumpHeight}
$$

匀变速直线运动方程

在物理模拟层面,角色的跳跃或炮弹的抛射通常遵循牛顿运动定律。从轨迹形状来看,匀变速曲线运动必然呈现为抛物线或其一部分。

在数学领域,这可以通过基础的匀变速直线运动方程来描述。垂直方向上的位移可以使用以下公式:

$$
h = v_0t -\frac{1}{2}gt^{2}
$$

其中 $h$ 是垂直位移高度,$v_0$ 是初始垂直速度,$t$ 是时间,$g$ 是重力加速度。

角色在空中的上升和下降阶段,速度会不断变化。上升时速度逐渐减小,下降时速度逐渐增大。速度的变化可以用公式 $v = v_0 - gt$ 来计算。

基于公式可以推导出G值

在射击炮弹(跳跃)的过程中,如果服务器明确在 t 秒后击中点 p,此时需要客户端补充一个抛物线轨迹。首先针对垂直方向(Y 轴)来逆向推导重力加速度 g 的数值。此情况在手机游戏中较为常见,由于多端同步的复杂程度会增加,大多网络游戏通常将水平轴向设定为匀速(非加速运动),部分竞速类游戏会采用非线性的加速公式,相应的计算亦会更为繁杂。已知服务器在特定 t 之后发射的炮弹能够抵达目标点,依据此炮弹的初始速度 v₀y,便能计算出该炮弹的 g 。

考虑垂直方向(Y 轴)来逆向推导重力加速度 g 的数值。

垂直位移公式为 $y = v_{0y}t - \frac{1}{2}gt^{2}$ ,移项可得 :

$$
g = \frac{v_{0y}t-y}{t^{2}}
$$

现在知道了 $g$ 就可以根据 $h = v_0t -\frac{1}{2}gt^{2}$ 去计算单位时间内Y轴的高度变化。如果结合水平方向的位移也就有了我们所需要的点对点抛物线轨迹。

基于公式可以推导出物体在做抛物线运动时,预测其某一时刻的某一点

在不考虑引入新变量(即不考虑阻力)的情况下,对于做抛物线运动的物体,我们基于速度变化公式来推导其在某一时刻的位置。

水平方向:$x = v_x t$ 。

垂直方向:$y = v_{0y}t - \frac{1}{2}gt^{2}$ 。

补充:基于公式可以推导出$v_0$值

如果我们要限定当前跳跃的高度,不能超出指定 $h$,这时候就需要变换一下公式。

在给定 $h$ 、 $t$ 以及重力加速度 $g$ ,来计算初始速度 $v_0$ ,可以这样推导:

$$
v_0 = \frac{h}{t} + \frac{1}{2}gt
$$

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号