其他分享
首页 > 其他分享> > A better jump —— 优化游戏中的跳跃

A better jump —— 优化游戏中的跳跃

作者:互联网

之前一提起角色的跳跃,想当然的想法就是:给角色一个向上的初速,然后由Unity的物理系统接管就好了嘛,这样忽略空气摩擦的影响,根据重力加速度,角色向上跳到最高点的时间和由最高点落下的时间相等,不是很合理嘛。最近看了几篇文章才发现,这样的想法是错误的。

仔细观察马里奥这类经典平台跳跃游戏其实可以发现,角色向上运动的过程占的帧数达到跳跃全过程总帧数的约2/3,就是说其实马里奥下落的更快。这样设计的原因就是如果角色上下的时间相等,会在下落时给玩家带来一种漂浮感,这是我之前没有仔细考虑的。

那么如何优化呢?加入几行代码即可:

public float fallmultiplier = 2.5f;
    public float lowmultiplier = 2f;

    Rigidbody2D rb;

    private void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        if (rb.velocity.y < 0)
        {
            rb.velocity += Vector2.up * Physics2D.gravity.y * (fallmultiplier - 1) * Time.deltaTime;
        } 
        else if (rb.velocity.y > 0 && !Input.GetButton("jump"))
        {
            rb.velocity += Vector2.up * Physics2D.gravity.y * (lowmultiplier - 1) * Time.deltaTime;
        }
    }

当物体向下运动时添加系数fallmultiplier 使下落时加速度更大。

上面第二段条件语句里面还实现了玩家轻按跳跃键时跳不高,只有长按才跳得高的设定。

 

标签:fallmultiplier,jump,角色,better,rb,跳跃,velocity,马里奥
来源: https://www.cnblogs.com/yuiyui19911002/p/15880227.html