using UnityEngine; using Utils; public class InteractiveLayerHandler : MonoBehaviour { [SerializeField] private Collider2D frontCollider; [SerializeField] private Collider2D backCollider; private SpriteRenderer spriteRenderer; private void Awake() { spriteRenderer = GetComponent(); } private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) { if (frontCollider.IsTouching(other)) // Player is in front of the tree { spriteRenderer.sortingOrder = AppConfig.PLAYER_LAYER + 1; // tODO: maybe slowly fad to 0.7f over time spriteRenderer.color = new Color(1, 1, 1, 0.7f); // fade to 0.7f over time // spriteRenderer.color = new Color(1, 1, 1, Mathf.Lerp(1f, 0.7f, Time.deltaTime)); } else if (backCollider.IsTouching(other)) { // Player is behind the tree spriteRenderer.sortingOrder = AppConfig.PLAYER_LAYER - 1; // change opacity of sprite to see through spriteRenderer.color = new Color(1, 1, 1, 1f); } } } private void OnTriggerExit2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) // Reset the tree's layer when the player is no longer overlapping spriteRenderer.sortingOrder = AppConfig.PLAYER_LAYER; spriteRenderer.color = new Color(1, 1, 1, 1f); } }