【问题标题】:Unity 2D Character Too Much JumpingUnity 2D 角色跳跃太多
【发布时间】:2019-06-06 05:39:51
【问题描述】:

首先对不起我的英语不好。我的问题很清楚;

我的角色有时会跳得很高。

通常; gif; normal jump

如果角色跳到对撞机角落,有时会发生这种情况; gif; anormal high jump

为什么会这样?我该如何解决这个问题?

这是我的密码;

    private void FixedUpdate()
{
    jumpButton = GameObject.Find("Jump").GetComponent<Button>();
    jumpButton.onClick.AddListener(Jump);

    groundCheck = GameObject.Find("GroundCheck").GetComponent<Transform>();
    isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);

    MoveInput = SimpleInput.GetAxisRaw("Horizontal");
    rb.velocity = new Vector2(MoveInput * speed, rb.velocity.y);

    if (isGrounded && jump)
    {
        rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
        jump = false;
    }
}

public void Jump()
{
    jump = true;
}

【问题讨论】:

    标签: c# unity3d 2d collider


    【解决方案1】:

    按照您的方式,您每次跳跃时都能加速向上运动。

    为了使每次跳跃产生相同的速度,只需将 y 速度设置为某个值。我们可以使用jumpForce/rb.mass 获得与使用AddForceForceMode2D.Impulse 产生的相同值。

    private void FixedUpdate()
    {
        jumpButton = GameObject.Find("Jump").GetComponent<Button>();
        jumpButton.onClick.AddListener(Jump);
    
        groundCheck = GameObject.Find("GroundCheck").GetComponent<Transform>();
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
    
        MoveInput = SimpleInput.GetAxisRaw("Horizontal");
        rb.velocity = new Vector2(MoveInput * speed, rb.velocity.y);
    
        if (isGrounded && jump)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce/rb.mass);
            jump = false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多