簡體   English   中英

一次OnCollisionStay在C#中統一檢測兩個平面的碰撞?

[英]OnCollisionStay at a time Collision detection for two plane in C# unity?

我是一個初學者,正在從事Stacker游戲,並且有多個平面,但是其中一個是正確的,而另一個是錯誤的。 現在我的問題是,有時堆垛機同時停在兩架飛機上,而這兩個功能都會在“游戲結束”和其他“進入下一關”時被調用。 告訴我如何比較兩個標簽,如果兩個標簽都為真,那就做什么。 謝謝這里是我的代碼。

void OnCollisionStay(Collision collision) {

        if (collision.collider.tag == "plane1") {

            if (script2.rb.velocity.magnitude == 0.0f) {

                collision.collider.gameObject.GetComponent<Renderer> ().material.mainTexture = color1;
                cont++;
                SetCountText ();
                script1.jump1 ();
                StartCoroutine (wait ());
            }

        } else if (collision.collider.tag == "plane2") {
            if (script2.rb.velocity.magnitude == 0.0f) {
                script.jump ();
                Time.timeScale = 0;
            }
            else {
                if (script2.rb.velocity.magnitude == 0.0f) {
                    script.jump ();
                    Time.timeScale = 0;
                }

            }


        }

      if (collision.collider.tag == "plane1" && collision.collider.tag ==    "plane2") {

            script.jump ();
            Time.timeScale = 0;
            Debug.Log("hello");
        }

您的代碼並不完全符合您的問題,但是我認為問題是“勝利”和“失敗”條件都是由物理學觸發的,並且都發生在同一幀中?

最簡單的處理方法是讓布爾(或更好的是一個枚舉)存儲游戲狀態-如果關卡結束,碰撞函數將不執行任何操作。 似乎應該有一種漂亮,優雅的方法來解決此問題,但我不知道有哪一種方法。 禁用對撞機可能不起作用,因為在您的物理回調函數被調用時,這兩種沖突已經發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM