49 lines
1.5 KiB
C#
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);
|
|
}
|
|
} |