From 848097c88bbcf24934a375dff39cf4defa2819dd Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 4 May 2023 11:25:52 +0800 Subject: *misc --- marching/Assets/Scripts/EntityBase.cs | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 marching/Assets/Scripts/EntityBase.cs (limited to 'marching/Assets/Scripts/EntityBase.cs') diff --git a/marching/Assets/Scripts/EntityBase.cs b/marching/Assets/Scripts/EntityBase.cs new file mode 100644 index 0000000..c1beb42 --- /dev/null +++ b/marching/Assets/Scripts/EntityBase.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EntityBase : MonoBehaviour +{ + public SpriteRenderer m_Shadow; + + private 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) + { + m_Shadow.sprite = m_SpriteRenderer.sprite; + m_Shadow.flipX = m_SpriteRenderer.flipX; + } + } + +} -- cgit v1.1-26-g67d0