I have an GameObject with Box Collider, and I want know if this box has a collision on top

How can I detect which collision side came from ?

I’m trying this.

private void OnCollisionEnter2D(Collision2D coll){
        if(coll.gameObject.name.Equals("PlayerObject")){
            if(coll.contacts[0].point.y > 0){
                Debug.Log("collision at top");
            }else{
                Debug.Log("collision at side x");
            }
        }
    }

Just checking the ‘y’ won’t work. Try this.

using UnityEngine; 
using System.Collections;

public class Example : MonoBehaviour{

	private float topAngle;
	private float sideAngle; 

	void Start() {
		Vector2 size = GetComponent<BoxCollider2D>().size;
		size = Vector2.Scale (size, (Vector2)transform.localScale);
		topAngle = Mathf.Atan (size.x / size.y) * Mathf.Rad2Deg;
		sideAngle = 90.0f - topAngle;
		Debug.Log (topAngle + ", " + sideAngle);
	}

	void OnCollisionEnter2D(Collision2D coll) {
		Vector3 v = (Vector3)coll.contacts[0].point - transform.position;

		if (Vector3.Angle(v, transform.up) <= topAngle) {
			Debug.Log("Collision on top");
		}
		else if (Vector3.Angle(v, transform.right) <= sideAngle)  {
			Debug.Log("Collision on right");
		}
		else if (Vector3.Angle(v, -transform.right) <= sideAngle) {
			Debug.Log ("Collision on Left");
		}
		else {
			Debug.Log("Collision on Bottom");
		}
	}
}