Collider2D/RigidBody2D not working

When searching, I seem to only be able to find people who did not know to use the 2D version of colliders or methods, so it’s been difficult to find an answer for this.

I have two objects I want to collide (this game is a top view, so gravity does not come into play here).

When the fireball flies, it goes straight through the player without ever logging a collision. They are both on layer 0. Am I missing something small?

A Fireball:
(Note that I have IsTrigger checked, but either way does not seem to make a difference)

Fireball1
My Fireball

And the player (except for it’s transform, let me know if that is needed here):

The Player

Here is the code on the fireball:

var speed : int = 2; 


function Update () {

	transform.Translate( Vector3(.5,0,0) * Time.deltaTime * 10);

}

function OnCollisionEnter2D(coll: Collision2D) {
	Debug.Log("FIREBALL COLLISION");
	if (coll.gameObject.tag == "Player"){
		coll.gameObject.SendMessage("ApplyDamage", 34);
    }

    Destroy(gameObject);
}

And here is the code on the player (though I don’t think the problem of 2D collision resides here):

var health = 100;
 
function ApplyDamage (damage : int) {
     health -= damage;
 
     if(health <= 0) {
         Die();
     }
 }
function Die () {
   //Die and or Respawn
   Destroy(gameObject);
}

Since your Fireball object has a trigger collider you should use OnTriggerEnter2D instead of OnCollisionEnter2D.

Also from your Fireball and Player game object uncheck Is Kinematic since kinematic ridigbodies don’t participate in collisions (Ref: Rigidbody2D.isKinematic).

Now since your Fireball and player is not kinematic anymore you should move it using Rigidbody2D.MovePosition from your FixedUpdate() for proper physics.

Something like:

var speed : Vector2 = Vector2 (2, 0);

function FixedUpdate () {
    rigidbody2D.MovePosition(rigidbody2D.position + speed * Time.deltaTime);
}