2016-02-29 76 views
0

我有一個畫布,當我啓動遊戲時它已經初始化,並且裏面有一個帶有播放和退出按鈕的菜單。遊戲是一個無盡的跑步者,一切工作正常,但是當我點擊Play按鈕來真正開始遊戲時,Player對象自動給我一次跳躍,之後,這一切都是正常的,就像當我點擊Play按鈕時它擊中游戲和玩家同時進行。我需要在Android設備上工作。玩家對象在點擊開始按鈕時自動跳轉

Player.cs腳本

...

void Start() { 
    Highscore = PlayerPrefs.GetInt ("Highscore", 0); 
    jumpOne = false; 
    jumpTwo = false; 
    canDoubleJump = false; 
} 
void Update() { 
    for (int i = 0; i < Input.touchCount; i++){ 
     if (Input.GetTouch(i).phase == TouchPhase.Began && isFalling == false) { 
     jumpOne = true; 
     canDoubleJump = true; 
     isFalling = true; 
     }else if (Input.GetTouch(i).phase == TouchPhase.Began && isFalling == true && canDoubleJump == true) { 
     jumpTwo = true; 
     canDoubleJump = false; 
     } 
    } 
} 

void FixedUpdate() { 
    transform.Translate(Vector2.right * power * Time.deltaTime); 
    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 ClickedStart() { 
    MainMenu.SetActive(false); 
    Time.timeScale = 1.0f; 
    Playing = true; 
} 

已經嘗試過,問題仍然存在 (Input.GetMouseButtonDown(0))

(Input.GetKeyDown(KeyCode.Space))工作正常,沒有錯誤,但我無法在Android中跳轉運行。

回答

0

您正在使用TouchPhase.Began,因此,當您隱藏您的主菜單時,觸摸仍然處於活動狀態,因此玩家跳轉,我建議您使用waitforseconds方法的協調程序,然後再開始讓玩家跳轉。

+0

Lumb,初學者不應該使用協程。只需使用簡單的「Invoke」調用即可。 – Fattie

+0

好吧,然後嘗試這個if語句並將所有的觸摸代碼放在裏面:if(!MainMenu.isactiveSelf){},看看是否有幫助 – LumbusterTick