evershade/Assets/Scripts/Handlers/InteractiveLayerHandler.cs

49 lines
1.5 KiB
C#

using UnityEngine;
using Utils;
public class InteractiveLayerHandler : MonoBehaviour
{
[SerializeField] private Collider2D frontCollider;
[SerializeField] private Collider2D backCollider;
private SpriteRenderer spriteRenderer;
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
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);
}
}