首页 > 解决方案 > Unity 2d 角色控制。速度还是什么?

问题描述

我有一个通过速度控制运动的固定操纵杆,我有一个我的角色跳跃的滑动。

固定操纵杆移动:

 void FixedUpdate()
{
    v = fixedJoystick.Vertical;
    h = fixedJoystick.Horizontal;

    if (h >= 0.35f)
    {
        rb2D.velocity = new Vector2(runSpeed, rb2D.velocity.y);
        spriteRenderer.flipX = false;
        animator.SetBool("Run", true);
    }
    else if(h <= -0.35f)
    {
        rb2D.velocity = new Vector2(-runSpeed, rb2D.velocity.y);
        spriteRenderer.flipX = true;
        animator.SetBool("Run", true);
    }
    else
    {
        animator.SetBool("Run", false);
    }
}

滑动跳转代码:

rb2D.velocity = -jumpVector.normalized * shotRecoilPower;

问题:当我移动时,我不能跳。因为有两个速度脚本相互冲突(我认为)

如何在没有速度的情况下向对象添加脉冲?

标签: c#unity3dvelocity

解决方案


1- 使用AddForce方法

2-不要直接设置速度,而是增加或减少它。

rb2D.velocity += new Vector2(runSpeed, rb2D.velocity.y);

如果你想有一个最大速度限制然后使用Vector2.ClampMagnitude


推荐阅读