OnCollisionEnter2D message being ignored

THANKS IN ADVANCE!!!

Hi, I’m working on a 2D RPG much like the early final fantasy games and such. I’m relatively new to unity but i’m getting the hang of things. What i’ve been trying to do is settle warping between areas so walking out of a house or inbetween “rooms” of a forest or cave. The warping worked fine so i decided to add a fade, which also worked fine, the problem was when it faded, the player (who ive named anna in some cases) didnt stop moving so while the fade is happening you can still move aound, so i decided to change it from ontriggerenter2d to oncollisionenter2d. Im certain the exit points have been changed from triggers and there shouldn’t be any errors in my script seeing as it worked fine when it was ontrigger but now the console gives me the error

“Script error: OnCollisionEnter2D
This message parameter has to be of type:
The message will be ignored”

Looking around on answers I’ve noticed that its supposed to actually state what type it should be of, but mine doesnt say, and its really bugging me.

These are all the scripts that use the fade or are affected by it:
This is attached to the “collidable” game objects that represent the exits:

public class Exit : MonoBehaviour {

	public AnnaController Player;
	public Rigidbody2D AnnaBody;
	public Transform PlayerLocation;
	public Transform UpDestination;
	public Transform DownDestination;
	public Transform RightDestination;
	public Transform LeftDestination;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	IEnumerator OnCollisionEnter2D(Collider2D other) {
		
		Fade sf = GameObject.FindGameObjectWithTag ("Fader").GetComponent<Fade> ();

		if (other.name == "Player") {
			yield return StartCoroutine (sf.FadeToBlack());
			if (Player.forwardVector == Vector2.up) {
				PlayerLocation.position = UpDestination.position;
			}
			else if (Player.forwardVector == Vector2.down) {
				PlayerLocation.position = DownDestination.position;
			}
			else if (Player.forwardVector == Vector2.right) {
				PlayerLocation.position = RightDestination.position;
			}
			else if (Player.forwardVector == Vector2.left) {
				PlayerLocation.position = LeftDestination.position;
			}
			yield return StartCoroutine (sf.FadeToClear());
		}
		
	}
}

This script contains the coroutines for the fade (note that AnimationComplete has been set to run at the end of the fade animations):
public class Fade : MonoBehaviour {

	private Animator anmtr;
	private bool isFading;
	public GameManager Manage;

	// Use this for initialization
	void Start () {
		anmtr = GetComponent<Animator> ();
	
	}

	public IEnumerator FadeToClear(){
		isFading = true;
		anmtr.SetTrigger ("FadeIn");
		Manage.gameRunning = false;

		while (isFading)
			yield return null;
	}

	public IEnumerator FadeToBlack(){
		isFading = true;
		anmtr.SetTrigger ("FadeOut");
		Manage.gameRunning = false;

		while (isFading)
			yield return null;
	}
	
	void AnimationComplete () {
		isFading = false;
		Manage.gameRunning = true;
	}
}

This is the Game Manager Script which has a boolean value that determines whether the player can move or not:
public class GameManager : MonoBehaviour {

	public bool gameRunning;

	// Use this for initialization
	void Start () {
	
		gameRunning = true;
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

This is the player movement script:
public class AnnaController : MonoBehaviour {

public GameManager Manage;
private Rigidbody2D rgdbdy;
public Animator anmtr;
private static bool playerExists;
private float mSpeed;
public bool overworld;
public Vector2 forwardVector;
public Vector2 mvmntVector;
public bool Up;
public bool Down;
public bool Left;
public bool Right;

// Use this for initialization
void Start () {
	anmtr = GetComponent<Animator> ();
	rgdbdy = GetComponent<Rigidbody2D> ();
	mSpeed = 0.75f;
	forwardVector = Vector2.zero;
	if (overworld) {
		if (!playerExists) {
			playerExists = true;
			DontDestroyOnLoad (transform.gameObject);

		} else { 
			Destroy (gameObject);
		} 
	}
}

// Update is called once per frame
void Update () {
	if (Input.GetKey (KeyCode.B)) {
		mSpeed = 1.25f;
	} else {
		mSpeed = 0.5f;
	}

	if (Input.GetAxisRaw ("Horizontal") > 0.5f) {
		Right = true;
		Left = false;
		Up = false;
		Down = false;
	} else if (Input.GetAxisRaw ("Horizontal") < -0.5f) {
		Left = true;
		Right = false;
		Up = false;
		Down = false;
	} else if (Input.GetAxisRaw ("Vertical") > 0.5f) {
		Up = true;
		Left = false;
		Right = false;
		Down = false;
	} else if (Input.GetAxisRaw ("Vertical") < -0.5f) {
		Down = true;
		Left = false;
		Up = false;
		Right = false;
	}
		
	if (Right) {
		forwardVector = Vector2.right;
		//transform.Translate (new Vector3 (Input.GetAxisRaw ("Horizontal"), 0f, 0f));
		if (Manage.gameRunning) {
			rgdbdy.velocity = new Vector2 (Input.GetAxisRaw ("Horizontal") * mSpeed, 0f);
			anmtr.SetBool ("isWalking", true);
			anmtr.SetFloat ("inputX", 1f);
			anmtr.SetFloat ("inputY", 0f);
		}
	}
	if (Up) {
		forwardVector = Vector2.up;
		//transform.Translate (new Vector3 (Input.GetAxisRaw("Horizontal"), 0f, 0f));
		if(Manage.gameRunning) {
			rgdbdy.velocity = new Vector2 (0f, Input.GetAxisRaw ("Vertical") * mSpeed);
			anmtr.SetBool ("isWalking", true);
			anmtr.SetFloat ("inputX", 0f);
			anmtr.SetFloat ("inputY", 1f);
	}
}
	if (Left) {
		forwardVector = Vector2.left;
		//transform.Translate (new Vector3 (0f, Input.GetAxisRaw("Vertical"), 0f));
		if (Manage.gameRunning) {
			rgdbdy.velocity = new Vector2 (Input.GetAxisRaw ("Horizontal") * mSpeed, 0f);
			anmtr.SetBool ("isWalking", true);
			anmtr.SetFloat ("inputX", -1f);
			anmtr.SetFloat ("inputY", 0f);
		}
	}
	if (Down) {
		forwardVector = Vector2.down;
		//transform.Translate (new Vector3 ( 0f, Input.GetAxisRaw("Vertical"), 0f));
		if (Manage.gameRunning) {
			rgdbdy.velocity = new Vector2 (0f, Input.GetAxisRaw ("Vertical") * mSpeed);
			anmtr.SetBool ("isWalking", true);
			anmtr.SetFloat ("inputX", 0f);
			anmtr.SetFloat ("inputY", -1f);
		}
	}
	if (Input.GetAxisRaw("Horizontal") == 0f && Input.GetAxisRaw("Vertical") == 0f) {
		rgdbdy.velocity = Vector2.zero;
		anmtr.SetBool ("isWalking", false);
	}

}
}

If there’s any thing you guys could do to point in the right direction pls, it would be much appreciated, Harambe be with you all!

In your Exit.cs script, the type is incorrect in the method signature.

You have on line 20:

IEnumerator OnCollisionEnter2D(Collider2D other) {

It should be a Collision2D type, the parameter name doesn’t matter.

IEnumerator OnCollisionEnter2D(Collision2D other) {

OnCollisionEnter2D Documentation which shows the corrected signature.