diff options
author | chai <215380520@qq.com> | 2023-05-04 11:25:52 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-04 11:25:52 +0800 |
commit | 848097c88bbcf24934a375dff39cf4defa2819dd (patch) | |
tree | 85f4cc4d09fbf2a3839752449d21cb3e0bec8fa1 /marching/Assets/Scripts/EntityBase.cs | |
parent | ba1ad0efd8601dc4af023aca5a78609c55b4d67f (diff) |
*misc
Diffstat (limited to 'marching/Assets/Scripts/EntityBase.cs')
-rw-r--r-- | marching/Assets/Scripts/EntityBase.cs | 49 |
1 files changed, 49 insertions, 0 deletions
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<SpriteRenderer>(); + + 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<SpriteRenderer>(); + 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; + } + } + +} |