玩家不能双跳
本文关键字:不能 玩家 | 更新日期: 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;
}