玩家不能双跳

本文关键字:不能 玩家 | 更新日期: 2023-09-27 18:32:35

我正在YouTube上学习教程,到目前为止一切正常,除了我只能用这段代码跳转一次,有什么建议吗?

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Player : MonoBehaviour {
    public float power = 500; 
    public int jumpHeight = 1000; 
    public bool isFalling = false; 
    public int Score;
    public Text SCORE; 
    public GameObject YOUDIED; 
    private int health = 3;
    public GameObject health1; 
    public GameObject health2; 
    public GameObject health3;
    public int Highscore;
    private bool canDoubleJump; 
    private bool jumpOne; 
    private bool jumpTwo;
    // Use this for initialization
    void Start () { 
        YOUDIED.SetActive(false);
        Highscore = PlayerPrefs.GetInt ("Highscore", 0);     
        jumpOne = false;   
        jumpTwo = false;    
        canDoubleJump = false;
    }
    void Update() {     
        if(Input.GetMouseButtonDown(0) && health == 0) {
            Time.timeScale = 1f;
            health = 3;
            Application.LoadLevel(0);
        }
        if (health == 3) {
            health1.SetActive (true);
            health2.SetActive (true);
            health3.SetActive (true);
        }
        if (health == 2) {
            health1.SetActive (true);
            health2.SetActive (true);
            health3.SetActive (false);
        }
        if (health == 1) {
            health1.SetActive (true);
            health2.SetActive (false);
            health3.SetActive (false);
        }
        if (health == 0) {
            health1.SetActive (false);
            health2.SetActive (false);
            health3.SetActive (false);
        }
        if (health <= 0) {
            YOUDIED.SetActive (true);
            Time.timeScale = 0.0f;
        }
        SCORE.text = "Score " + Score;
        transform.Translate(Vector2.right * power * Time.deltaTime);
        if (Input.GetKeyDown(KeyCode.Space) && isFalling == false) {
            jumpOne = true;
            canDoubleJump = true;
            isFalling = true;
        }
        if (Input.GetKeyDown(KeyCode.Space) && isFalling == true && canDoubleJump == true) {
            jumpTwo = true;
            canDoubleJump = false;
        }
     }
    void FixedUpdate() {
        if (jumpOne == true) {
            GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpHeight);
            jumpOne = false;
        }
        if (jumpTwo == true) {
            GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpHeight);
            jumpTwo = false;
        }
    }
    void OnCollisionStay2D(Collision2D coll) {
        if (coll.gameObject.tag == "Ground") {
            isFalling = false;
            canDoubleJump = false;
    }
 }
    public void ScorePlus(int NewScore) {
        Score += NewScore;    
        if(Score >= Highscore) {
            Highscore = Score;
            PlayerPrefs.SetInt ("Highscore", Highscore);
        }
    }
    void OnTriggerEnter2D(Collider2D coll) {
        if (coll.gameObject.tag == "Death") {
            health -= 1;
        }
    }   
}

玩家不能双跳

canDoubleJump 应该在这里设置为 true

void OnCollisionStay2D(Collision2D coll) {
    if (coll.gameObject.tag == "Ground") {
        isFalling = false;
        canDoubleJump = false;
}

同样在第一次跳跃中,您需要将 isFall 更改为 true

    if (jumpOne == true) {
        GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpHeight);
        jumpOne = false;
        isFalling = true;
    }

这应该可以解决问题

已解决,我放了一个 else if 语句,而不仅仅是一个 if

    if (Input.GetKeyDown(KeyCode.Space) && isFalling == false) {
        jumpOne = true;
        canDoubleJump = true;
        isFalling = true;
    }else if (Input.GetKeyDown(KeyCode.Space) && isFalling == true && canDoubleJump == true) {
        jumpTwo = true;
        canDoubleJump = false;
   }