2016-05-31 63 views
0

我正在開發一個非常小的Unity 5.4項目,我有幾個「小球」,它們在遊戲世界中有一個剛體2D和2D多邊形對撞機。然後我也有一個球,它有一個剛體2D,多邊形Colider和一個物理材料,可以讓球彈跳到其他物體上。Unity 3D 5.4 2D Collisions不工作?

下面的代碼被附加到球上的腳本會做些什麼...什麼時候它擊中綠色小球,但沒有任何反應。我實際上並不想讓它退出應用程序,這僅僅是爲了舉例。

以下是兩個對象的屬性:

enter image description here

public class BallBounce : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 
     //activate camera because I am lazy 
     var cam = GameObject.Find ("camera"); 
     var ball = GameObject.Find ("ball"); 
     Rigidbody2D rb = GetComponent<Rigidbody2D>(); 
     cam.SetActive (true); 
        } 

    // Update is called once per frame 
    void Update() { 
      } 

    void OnCollisionEnter2D(Collision2D col) 
    { 
     if (col.gameObject.tag == "Bricks") { 
      Application.Quit(); 
     } 

    } 
} 
+0

中的應用。 Quit()在編輯器中不起作用。您必須構建遊戲並將其作爲獨立應用程序來啓動,以使應用程序退出。 – Matriac

+0

嘿謝謝。我改變它,試圖摧毀它與接觸的磚塊也什麼都不做: 更新代碼: –

+0

無效OnCollisionEnter2D(Collision2D COL) \t { \t \t如果(col.gameObject.tag \t == \t「磚「){ \t \t \t Destroy \t(col.gameObject); \t \t} –

回答

0

Application.Quit();不會在編輯器中工作。它用於獨立構建。更換與UnityEditor.EditorApplication.isPlaying = false;

現在,如果你想讓它在這兩個編輯器和獨立建造工作:

void Start() 
{ 
    //activate camera because I am lazy 
    var cam = GameObject.Find ("camera"); 
    var ball = GameObject.Find ("ball"); 
    Rigidbody2D rb = GetComponent<Rigidbody2D>(); 
    cam.SetActive (true); 
    Debug.Log("Start Called!"); 
} 

void Update() 
{ 

} 

void OnCollisionEnter2D(Collision2D col) 
{ 
    Debug.Log("Collision detected: "+col.gameObject.name); 
    if (col.gameObject.tag == "Bricks") { 
     #if UNITY_EDITOR 
     UnityEditor.EditorApplication.isPlaying = false; 
     #else 
     Application.Quit(); 
     #endif 
    } 
} 

下一次測試時,如果事情是真的還是假的,乾脆用Debug.Log("It works");

+0

感覺這裏有些根本錯誤。甚至書面方式到控制檯失敗: –

+0

空隙OnCollisionEnter2D(Collision2D COL) \t { \t \t如果(col.gameObject.tag \t \t == 「磚」){ \t \t \t的debug.log( 「碰撞檢測」); \t \t} \t \t} –

+0

@RaeMichelleRichards爲什麼不把的debug.log( 「它的工作原理」);在你的啓動功能,並檢查你是否看到任何東西 – Programmer