- Home /
Script error: OnTriggerEnter2D The message must have 0 or 1 parameters. The message will be ignored.
I have been maing my own 2D Platfromer, and I have an Error that goes like this:
Script error: OnTriggerEnter2D
The message must have 0 or 1 parameters.
The message will be ignored.
It comes from my Enemy Behaviour Script:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;
public class Enemy1 : MonoBehaviour {
private int health = 1;
public int moveSpeed;
public int moveDirection = 1; //-1 is left, 1 is right
public int currentScene;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate (moveSpeed * moveDirection * Time.deltaTime, 0, 0);
}
void OnTriggerEnter2D(Collider2D turningPoint, Collider2D player){
if (turningPoint.CompareTag ("EnemyTurningPoint")){
if (moveDirection == 1) {moveDirection = -1;} //Flip Direction from right to left
if (moveDirection == -1) {moveDirection = 1;} //Flip Direction from left to right
}
else if (player.CompareTag ("Player")) {
SceneManager.LoadScene (currentScene); //Reload Scene
}
}
}
I wanted to use 2 Parameters to Differenciate between the Player and my manually placed "Enemy Turning Points", because the Enemy should do something else depending on whether he touches the Player or the Enemy Turning Point, but this Pesky Error prevents me from doing this.
If he touches the Player, he is supposed kills him, and when he touches a Enemy Turning Point, he is supposed to turn in the Opposite Direction from the one he's currently walking in.
Answer by hexagonius · Jun 25, 2018 at 07:18 PM
Just compaining about the error without following the requirement of the method does not get you anywhere. as the error says, either use none, or one Collider2D parameter only. Just do the CompareTag on it, you already have the if statement to distinguish between the two. Btw. code can be shortened:
if (moveDirection == 1) {moveDirection = -1;} //Flip Direction from right to left
if (moveDirection == -1) {moveDirection = 1;} //Flip Direction from left to right
to:
moveDirection = -moveDirection;
Thank you very much!
Now I changed OnTriggerEnter2D() from this:
void OnTriggerEnter2D(Collider2D turningPoint, Collider2D player){
if (turningPoint.CompareTag ("EnemyTurningPoint")){
if (moveDirection == 1) {moveDirection = -1;} //Flip Direction from right to left
if (moveDirection == -1) {moveDirection = 1;} //Flip Direction from left to right
}
else if (player.CompareTag ("Player")) {
Scene$$anonymous$$anager.LoadScene (currentScene); //Reload Scene
}
To this:
void OnTriggerEnter2D(Collider2D other){
if (other.CompareTag ("EnemyTurningPoint")){
moveDirection = -moveDirection;
}
else if (other.CompareTag ("Player")) {
Scene$$anonymous$$anager.LoadScene (currentScene); //Reload Scene
}
The Difference between the Two is, that there is now only one Collider2D, named other, that replaced both the player and turningPoint Collider2D's.
Now It works just as expected
Your answer

Follow this Question
Related Questions
SendMessage static parameters checking 0 Answers
Animation Parameters Not Working Correctly 0 Answers
Knockback effect in 2D. 1 Answer