using System.Collections; using System.Collections.Generic; using UnityEngine; public class EntityBase : MonoBehaviour { public SpriteRenderer m_Shadow; protected SpriteRenderer m_SpriteRenderer; protected virtual void Awake() { m_SpriteRenderer = GetComponent(); GameObject shadow = new GameObject("shadow"); shadow.transform.parent = transform; shadow.transform.localPosition = Vector3.zero; shadow.transform.localScale = new Vector3(1, 0.5f, 1); SpriteRenderer sr = shadow.AddComponent(); sr.material = new Material(Shader.Find("UI/SpriteSkewShader")); sr.material.SetFloat("_HorizontalSkew", 0.4f); sr.color = new Color(0, 0, 0, 0.4f); sr.sortingOrder = short.MinValue; m_Shadow = sr; } protected virtual void Update() { if (m_SpriteRenderer != null) { float y = transform.position.y; int order = -(int)(y * 100); if (order != m_SpriteRenderer.sortingOrder) { m_SpriteRenderer.sortingOrder = order; } } } protected virtual void LateUpdate() { if (m_Shadow != null) { if (m_Shadow.sprite != m_SpriteRenderer.sprite) { //m_Shadow.sprite = m_SpriteRenderer.sprite; //m_Shadow.flipX = m_SpriteRenderer.flipX; } } } }