【问题标题】:Infinite Jump how to limit the Jump?无限跳跃如何限制跳跃?
【发布时间】:2021-06-12 14:16:21
【问题描述】:

我正在使用这些脚本,跳转看起来不错,但问题是我可以无限跳转,如何限制跳转?

比如……我只想跳一次,落地后再跳,不是在空中跳,也​​不是二段跳……

Public void jumping()
{
    if (GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).IsName("Character - Idle - Nina"))
    {
        GetComponent<Animator>().SetTrigger("Jump");
    }

    if (GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).IsName("Character - Run - Nina"))
    {
        GetComponent<Animator>().SetTrigger("Jump");
    }

    GetComponent<Rigidbody2D>().velocity = new Vector2(0, jump);

}

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    您应该定义一个布尔变量,例如 canJump。当你与地面碰撞时,它应该是真的。当你按下空格进行跳跃时,如果你的 canJump 变量为 true,你可以开始跳跃动画然后设置你的 canJump 变量 false

    bool canJump;
    float force=10f;//it is an example try for better 
    
    Public void jumping()
    {
        if(canJump){
    
            if (GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).IsName("Character - Idle - Nina"))
            {
                GetComponent<Animator>().SetTrigger("Jump");
            }
    
            if (GetComponent<Animator> 
     ().GetCurrentAnimatorStateInfo(0).IsName("Character - Run - Nina"))
            {
                GetComponent<Animator>().SetTrigger("Jump");
            }
    
            GetComponent<Rigidbody2D>().AddForce(Vector3.up*force);
    
    
           canJump=false;
        }
    }
    
    
    void OnCollisionEnter(Collision collision){
    
        if(collision.gameObject.compareTag("ground")){
            canJump=true;
        }
    
    }
    
    

    【讨论】:

    • 哦不,我想通了,但还是不行,我还是可以用上箭头键飞
    • 只需复制 OnCollisionEnter 函数并粘贴到您的脚本上。添加对撞机您的玩家和地面。如果您正在开发 2d 游戏。在 OnCollisionEnter2D(Collision2D 碰撞) 函数之后添加 2D 并仅添加带有 2D 的碰撞,将您的玩家和地面固定。
    • 所以我需要将void OnCollisionEnter(Collision collision){ if(collision.gameObject.compareTag("ground")){ canJump=true; } 添加到我的地面并添加脚本?
    • 没有。将它添加到你的跳转功能所在的播放器脚本中
    • 我已经将它添加到我的播放器脚本 void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("Ground")) { canJump = true; } } 中,并且我已经在 void jumping() 中添加了 canJump = false; 但很抱歉它不起作用......我仍然可以飞行......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多