Reputation: 103
I've started studying Unity and decided to do some practice. So, I thought that it would be awesome to develope "Flappy Bird" as an experiment. But I've faced with the problem. You know, when you fly between pipes, you earn a point. To do that I made a prefab with two pipes and an empty game object (trigger) between them to detect collision with it. But when I call OnCollisionEnter2D
method, it detects collision with a prefab, not with the trigger or pipes in it. Could you help me? How do I detect collision with a child of a prefab?
Upvotes: 2
Views: 1041
Reputation: 82
like what Uri Popov answered, use OnTriggerEnter2D() there are several points you need to do :
1. Put the OnTriggerEnter2D() Script on your empty game object, and don't forget to attached collider2D on your empty object.
2. make sure isTrigger checked in collider2D option
3. also make sure your player has tag, you can make the tag your own, in this example i give "Player" tag to my player game object
4. the example script(i tired it and worked)
public class YourTriggerScript: MonoBehaviour {
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D collider)
{
if (collider.GetComponent<Collider2D>().tag == "Player")
{
Debug.Log ("Collided");
// do something or you can + your point here
}
}
}
Hope it helped you
Upvotes: 3
Reputation: 2167
if your collider is marked as a Trigger you should use OnTriggerEnter2D().
Upvotes: 1