- Home /
Question by
jarakbans · Sep 07, 2019 at 11:53 AM ·
2dontriggerexitontriggerenter2d
why OnTriggerEnter2d runs four-time?
I increment my score when the player touches the obstacle? but OnTriggerEnter2d run four-time I don't know why??
Script:playercontroll.cs
public Text scoretext;
Script:playerscore.cs
public static class playerscore
{
public static int Score = 0;
}
Script:Obstacle.cs
int incrementscore = 5;
void OnTriggerEnter2D(Collider2D other)
{
//obstacle collided with player
foreach (Transform child in transform) //multiple child obstacle(8)
{
Debug.Log("Inside foreach"); //4 times run
//StartCoroutine(gameover());
}
IncrementScore();
//here give an error also Object reference not set to an instance of an object Obstacle.OnTriggerExit2D
playercontroll.Instance.scoretext.text = playerscore.Score.ToString();
Debug.Log("Inside foreach1 Outside of for each loop"); //not run debug.log when I put outside for each loop see my image
}
void IncrementScore()
{
Debug.Log("Inside Increment score"); //4 times run
playerscore.Score = playerscore.Score + incrementscore;
//print(playerscore.Score);
//Debug.LogError("" + playerscore.Score);
PlayerPrefs.GetInt("score", playerscore.Score);
//print(PlayerPrefs.GetInt("score", playerscore.Score));
PlayerPrefs.SetInt("score", playerscore.Score);
}
IEnumerator gameover()
{
yield return new WaitForSeconds(1.5f);
string currentScenes = SceneManager.GetActiveScene().name;
//Debug.Log("currentsceneload:" + currentScenes);
SceneManager.LoadScene(currentScenes.ToString(), LoadSceneMode.Single);
//Debug.Log("currentscene1:" + LoadSceneMode.Single);
}
can i use ontriggerexit2d or not??
Image1:
Image2:
secondlog.png
(7.1 kB)
obstacleis.png
(17.2 kB)
Comment