Since this is quite hard to explain, this is why I have recorded a video that show the bug:
As you can see at 20 seconds my pillars stop receiving the trigger information, they aren’t destroyed when hitted and also they don’t deal damage anymore.
Here is the code for the pilar:
using System.Collections;
using System.Collections.Generic;
using DarkTonic.PoolBoss;
using UnityEngine;
public class ObstaclePilar_Infinity : MonoBehaviour
{
public static InfinityGame GameManager;
public static GameObject game;
public GameObject PlayerP;
public GameObject ParticleHit;
Collider2D bodycollider;
Collider2D attackcollider;
Animator anim;
bool isDestroyed = false;
bool particlePlayed = false;
// Start is called before the first frame update
private void Awake() {
isDestroyed = false;
}
void Start()
{
isDestroyed = false;
anim = GetComponent<Animator>();
game = GameObject.FindWithTag("GameController");
GameManager = game.gameObject.GetComponent<InfinityGame>();
PlayerP = GameManager.Player;
}
// Update is called once per frame
void Update()
{
}
public void DestroyThis()
{
PoolBoss.Despawn(transform, true);
}
private void OnTriggerStay2D(Collider2D other)
{
if (other == PlayerP.GetComponent<CapsuleCollider2D>() && !isDestroyed)
{
GameManager.PlayerHit();
}
if (other == PlayerP.GetComponent<CircleCollider2D>() && PlayerP.GetComponent<CircleCollider2D>().isTrigger)
{
DestroyPilar();
}
}
void DestroyPilar()
{
if (!isDestroyed)
{
SoundManager.Instance.PlayOneShot(SoundManager.Instance.PunchHit);
if (!particlePlayed)
{
Instantiate(ParticleHit, transform.position, Quaternion.identity);
}
isDestroyed = true;
anim.SetBool("Destroy", true);
}
}
}
I am using a Pool add-on to handle pooling, I don’t know if its related or not, because after hitting it im sending it back to the pool.
Anyone had any idea where to look and approach the problem?