Unity2D入门(二) 优化玩家移动手感(一)

Unity2D入门(二) 优化玩家移动手感(一)

进一步优化 Unity2D入门(一) 玩家移动 的脚本

1. 重力

太低的重力会导致玩家的手感轻飘飘的,像在太空移动一样。通过玩家的重量也可以加强重力的手感,调整到适合的重力和玩家重量进一步改善操控手感。

2. 地面摩檫力

玩家在地面移动时会受到地面摩檫力。在玩家转向或停下时地面摩檫力会作为阻力帮助玩家减速。如果地面摩檫力太低,会导致玩家转向时间太长或玩家停下时会向前滑行一段距离才会停下。调整到适合地面摩檫力进一步改善操控手感。

3. 玩家减速优化

在玩家转向时不单只有地面摩檫力,玩家也会输入一个反方向作用力进行减速。增加玩家的加速度来降低玩家转向的时间,可以避免手感发软。

根据上一篇文章进行优化:

private void FixedUpdate()
    {
        // 反方向减速优化
        if (rigidbody2D.velocity.x < 0 && moveHorizontal > 0)
        {
            rigidbody2D.AddForce(movement * speed * 30f);
        }
        if (rigidbody2D.velocity.x > 0 && moveHorizontal < 0)
        {
            rigidbody2D.AddForce(movement * speed * 30f);
        }

        rigidbody2D.AddForce(movement * speed * 10f);
    }

FixedUpdate()函数判断玩家转向的时机,增加加速度。

4. 玩家加速优化

在玩家转向时还会有一个加速的过程,玩家起步时也有一个加速过程。和上面同理,减少加速时间达到优化手感。

    private void FixedUpdate()
    {
        // ...反方向减速优化省略
        
        // 加速优化
        if (rigidbody2D.velocity.x<0 && rigidbody2D.velocity.x>-6 && moveHorizontal<0)
        {
            rigidbody2D.AddForce(movement * speed * 20f);
        }
        if (rigidbody2D.velocity.x<6 && rigidbody2D.velocity.x>0 && moveHorizontal>0)
        {
            rigidbody2D.AddForce(movement * speed * 20f);
        }

        rigidbody2D.AddForce(movement * speed * 10f);
    }

5. 最后的脚本和属性(仅供参考)

private void FixedUpdate()
    {
        // 反方向减速优化
        if (rigidbody2D.velocity.x < 0 && moveHorizontal > 0)
        {
            rigidbody2D.AddForce(movement * speed * 30f);
        }
        if (rigidbody2D.velocity.x > 0 && moveHorizontal < 0)
        {
            rigidbody2D.AddForce(movement * speed * 30f);
        }

        // 加速优化
        if (rigidbody2D.velocity.x < 0 && rigidbody2D.velocity.x > -6 && moveHorizontal < 0)
        {
            rigidbody2D.AddForce(movement * speed * 20f);
        }
        if (rigidbody2D.velocity.x < 6 && rigidbody2D.velocity.x > 0 && moveHorizontal > 0)
        {
            rigidbody2D.AddForce(movement * speed * 20f);
        }

        rigidbody2D.AddForce(movement * speed * 10f);
    }

Unity2D入门(二) 优化玩家移动手感(一)_第1张图片

关注我的微信公众号,查看更多文章,第一时间收到我的文章。

Unity2D入门(二) 优化玩家移动手感(一)_第2张图片

你可能感兴趣的:(Unity)