From b18eb9e8b28fc56438760bc7f1823fdeabe979db Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 20 Apr 2022 10:50:04 +0800 Subject: * topdown transform --- .../Scripts/Rendering/TopDownShadowCaster.cs | 37 +++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'AlienSurvival/Assets/Scripts/Rendering') diff --git a/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs index 2ef26a0..9e3a3ee 100644 --- a/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs +++ b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs @@ -4,10 +4,45 @@ using UnityEngine; [DisallowMultipleComponent] [RequireComponent(typeof(TopDownTransform))] +[RequireComponent(typeof(SpriteRenderer))] public class TopDownShadowCaster : MonoBehaviour { - [SerializeField] private Color m_Color = Color.black; [SerializeField] private Vector2 m_Scale = new Vector2(1, 0.5f); + private GameObject m_Shadow; + private SpriteRenderer m_ShadowRenderer; + + private TopDownTransform m_Coord; + private SpriteRenderer m_SpriteRenderer; + + private void Start() + { + m_Coord = GetComponent(); + m_SpriteRenderer = GetComponent(); + + if (m_Shadow == null) + { + m_Shadow = new GameObject("shadow"); + m_Shadow.transform.SetParent(transform); + + m_Shadow.transform.localScale = m_Scale; + + m_ShadowRenderer = m_Shadow.AddComponent(); + m_ShadowRenderer.color = m_Color; + m_ShadowRenderer.sprite = m_SpriteRenderer.sprite; + m_ShadowRenderer.sortingLayerName = "Shadow"; + + } + } + + private void Update() + { + if (m_Shadow == null) + return; + + Vector3 pos = m_Coord.GetGround3DPosition(); + m_Shadow.transform.position = pos; + } + } -- cgit v1.1-26-g67d0