using UnityEngine; public class BreakableWall : MapElement { private float _respawnElementTimer; private int _respawnTimeout = 4; private bool _needRespawn = false; private bool _characterInRange = false; private BoxCollider2D _boxCollider; private SpriteRenderer _spriteRenderer; [SerializeField] private GameObject _hitParticles; private void Start() { _boxCollider=GetComponent(); _spriteRenderer= GetComponentInChildren(); } public override void Hit() { IsEnabled = false; _boxCollider.isTrigger=true; _spriteRenderer.enabled = false; Instantiate(_hitParticles, transform.position, Quaternion.identity); _respawnElementTimer = _respawnTimeout; _needRespawn = true; } private void Update() { if (_needRespawn) { _respawnElementTimer -= Time.deltaTime; if (_respawnElementTimer <= 0) { _respawnElementTimer = _respawnTimeout; if(_characterInRange) { print("Character is dead"); } IsEnabled = true; _boxCollider.isTrigger = false; _spriteRenderer.enabled = true; _needRespawn = false; } } } private void OnTriggerEnter2D(Collider2D collider) { var character = collider.GetComponent(); if (character) { _characterInRange = true; } } private void OnTriggerExit2D(Collider2D collider) { var character = collider.GetComponent(); if (character) { _characterInRange = false; } } }