2015-01-09 106 views
2

我一直在試圖讓碰撞工作,但迄今沒有好處。二維碰撞檢測不起作用

Screenshot Unity

這是我moveBall.cs,我把我的球對象。

using UnityEngine; 
using System.Collections; 

public class moveBall : MonoBehaviour { 

float balSnelheid = 1; 

void Update() { 
    transform.Translate (0, balSnelheid * Time.deltaTime, 0); 
} 

void OnCollisionTrigger2D (Collision2D coll) { 
    if (coll.gameObject.name == "Brick") { 
     Destroy(coll.gameObject); 
    } 
    } 
} 

而這是我放在我的Player對象上的movePlayer.cs。

using UnityEngine; 
using System.Collections; 

public class movePlayer : MonoBehaviour { 

public float snelheid; 

// Use this for initialization 
void Start() { 
    Screen.showCursor = false; 
} 

// Update is called once per frame 
void Update() { 
    if (transform.position.x + Input.GetAxis ("hor") * snelheid * Time.deltaTime < 2.9) { 
     if (transform.position.x + Input.GetAxis ("hor") * snelheid * Time.deltaTime > -2.9) { 
      transform.Translate(Input.GetAxis("hor") * snelheid * Time.deltaTime, 0, 0); 
     } 
    } 

    if (transform.position.x + Input.GetAxis ("hor") * snelheid * Time.deltaTime > 3) { 
     transform.position = new Vector3(2.9f, -4.7f, 0); 
    } else if (transform.position.x + Input.GetAxis ("hor") * snelheid * Time.deltaTime < -3) { 
     transform.position = new Vector3(-2.9f, -4.7f, 0); 
    } 
    } 
} 

如果任何人都可以給我一個提示/解決方案,將幫助了我很多!

+0

究竟正在發生,而不是要發生什麼?沒有描述,圖片沒有告訴我多少 – 2015-01-09 19:32:19

回答

2

我從右邊看到的一個問題是,您使用的是RigidBody組件而不是RigidBody2D組件。您需要小心使用哪些組件。

此外,OnTriggerEnter2D()OnCollisionEnter2D()是你在找什麼,而不是OnCollisionTrigger2D。

如果使用的3D組件被選擇,請看看OnCollisionEnter()OnTriggerEnter()

+0

非常感謝,它現在正在工作。我完全忽視了Rigidbody 2D和對撞機2D。而且我正在使用OnCollisionTrigger2D進行測試,因爲它沒有與OnCollisionEnter2D一起工作,並且忘記將其改回。再次非常感謝! – Carrier 2015-01-09 20:00:28

+0

很棒的回答,+1。我還想補充一點,你不能使用3D碰撞2D碰撞體。 – FunctionR 2015-01-09 20:01:21