Garou. 2020-11-01 19:38 采纳率: 0%
浏览 95

Unity2D如何实现从高处落下直接进行一次二段跳?

我用的方法是检测是否在地面上,然后可以跳跃,再触发二段跳,二段跳之后不允许跳跃。但是这个方法触发的二段跳需要先进行一次在地面上的跳跃,如果我在高处直接走下来,会判定我没站在地面上,就无法跳跃了,我也没办法设置成不在地面上触发二段跳,这样就会变成无限跳,求大佬们帮帮我
void Jump()
{
if (Input.GetButtonDown("Jump"))
{
if (onGround)
{
myAnim.SetBool("Jump", true);
Vector2 jumpVel = new Vector2(0.0f, jumpSpeed);
rb.velocity = Vector2.up * jumpVel;
DoubleJump = true;
}
else
{
if (canDoubleJump)
{
myAnim.SetBool("Jump", true);
myAnim.SetBool("Fall", false);
Vector2 doubleJumpVel = new Vector2(0.0f, doubleJumpSpeed);
rb.velocity = Vector2.up * doubleJumpVel;
DoubleJump = false;
}
}
}
}


  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-24 22:40
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 在使用Jump方法时,通过检测是否在地面上来实现一次跳跃和二段跳的功能。但是如果在高处直接走下来,无法判定为站在地面上,导致无法触发跳跃。同时,为了防止无限跳跃,又不允许在不在地面上时触发二段跳。 解决方案:
    1. 修改Jump方法中的条件判断,不仅检测是否在地面上,还需考虑是否在空中且可以二段跳。
    2. 添加一个额外的bool变量isJumping来标识当前是否在跳跃中,在地面上时设为false,在跳跃时设为true。
    3. 在落地时重置isJumping为false,以便下次跳跃判断。
    4. 修改跳跃逻辑,使得在地面上触发的一次跳跃和二段跳都分别独立执行。 修改后的代码示例:
    bool isJumping = false;
    void Jump()
    {
        if (Input.GetButtonDown("Jump"))
        {
            if (onGround && !isJumping)
            {
                myAnim.SetBool("Jump", true);
                Vector2 jumpVel = new Vector2(0.0f, jumpSpeed);
                rb.velocity = Vector2.up * jumpVel;
                isJumping = true;
                DoubleJump = true;
            }
            else if (!onGround && canDoubleJump && DoubleJump)
            {
                myAnim.SetBool("Jump", true);
                myAnim.SetBool("Fall", false);
                Vector2 doubleJumpVel = new Vector2(0.0f, doubleJumpSpeed);
                rb.velocity = Vector2.up * doubleJumpVel;
                isJumping = true;
                DoubleJump = false;
            }
        }
    }
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战