Infinite Collision? Can't figure out bug
So I have this mechanic where if you touch the ball you die. You die, respawn at the spawn point, and the value of deaths increases by 1. I wrote the script so that if it touches an object with the tag "enemy" the death script will activate. If it touches an object with the "goal" script, next level is loaded. My problem is that whenever I touch the ball, my character is stuck and continuously dies after respawning. The death total just increases and increases and he's stuck at spawn point unable to move. Other collisions with other enemies work perfectly fine, it's only with this ball that happens. Here are the scripts of the ball, as well as the respawn script.
RESPAWN SCRIPT: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Respawn : MonoBehaviour { [SerializeField] private Transform player; [SerializeField] private Transform respawnPoint;
private bool collideWithEnemy;
private bool collideWithGoal;
void Update(){
if(collideWithEnemy){
TurnoversUI.numberOfDeaths++;
player.transform.position = respawnPoint.transform.position;
}
if(collideWithGoal){
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
void OnTriggerEnter2D(Collider2D col){
if(col.CompareTag("enemy")){
collideWithEnemy = true;
}
else if(col.CompareTag("Goal")){
collideWithGoal = true;
}
}
void OnTriggerExit2D(Collider2D col){
if(col.CompareTag("enemy")){
collideWithEnemy = false;
}
else if(col.CompareTag("Goal")){
collideWithGoal = false;
}
}
}
BASKETBALL SCRIPT using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Basketball : MonoBehaviour { public float speed = 20f; public GameObject basketballPrefab; public Rigidbody2D ribody; // Start is called before the first frame update void Start() {
}
// Update is called once per frame
void Update()
{
//My balls trajectory
Vector3 airPath = new Vector3(-5f, 8f, 0f);
transform.position += airPath * Time.deltaTime;
DestroyObjectDelayed();
}
// I want it to automatically be destroyed after a while
void DestroyObjectDelayed(){
Destroy(basketballPrefab, 3);
}
// I also want it to be destroy upon collision void OnCollisionEnter2D(Collision2D other){ Destroy(basketballPrefab); } }
I really have no idea what's going on. Help please.
Your answer
Follow this Question
Related Questions
Checkpoint and Respawn 0 Answers
Get list of enemies in range 1 Answer
Problems with using OnTriggerStay2d 0 Answers
ANIMATION TRIGGER DOESN'T PLAY 1 Answer