summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Scripts/Rendering
diff options
context:
space:
mode:
Diffstat (limited to 'AlienSurvival/Assets/Scripts/Rendering')
-rw-r--r--AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs37
1 files changed, 36 insertions, 1 deletions
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<TopDownTransform>();
+ m_SpriteRenderer = GetComponent<SpriteRenderer>();
+
+ 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<SpriteRenderer>();
+ 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;
+ }
+
}