You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity2D 如何通过Velocity与Gravity计算2D物体跳跃高度

跳跃高度计算实现

你要的CalculateJumpHeight方法可以直接用竖直上抛运动的物理公式实现,原理是竖直方向初速度全部被重力抵消时达到最高点,推导后最大高度公式为:初速度平方 / (2 * 重力加速度大小)

基础版代码实现

float CalculateJumpHeight(float jumpInitialVelocity)
{
    // 取2D重力的y分量绝对值,Unity默认重力向下为负值
    float gravity = Mathf.Abs(Physics2D.gravity.y);
    // 代入竖直上抛最大高度公式
    return (jumpInitialVelocity * jumpInitialVelocity) / (2 * gravity);
}

适配自定义重力缩放的版本

如果你修改了刚体的gravityScale属性,用这个版本适配即可:

float CalculateJumpHeight(float jumpInitialVelocity, float gravityScale)
{
    float gravity = Mathf.Abs(Physics2D.gravity.y) * gravityScale;
    return (jumpInitialVelocity * jumpInitialVelocity) / (2 * gravity);
}

调用的时候传入当前刚体的重力缩放值即可:

float jumpHeight = CalculateJumpHeight(jump, rb.gravityScale);

补充说明

上面计算得到的是相对于起跳点的高度差,如果你要设置indicator的世界坐标,需要叠加起跳点本身的y轴坐标:

indicator.transform.position = new Vector2(transform.position.x, transform.position.y + jumpHeight);

内容的提问来源于stack exchange,提问作者DooshBlonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 01:36:02