summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Scripts
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-04-20 10:50:04 +0800
committerchai <chaifix@163.com>2022-04-20 10:50:04 +0800
commitb18eb9e8b28fc56438760bc7f1823fdeabe979db (patch)
treeb0361b56dc09495d45e7f165971ff70849db4721 /AlienSurvival/Assets/Scripts
parentba49cb4da7cae683585cc34b7adba46429c22af9 (diff)
* topdown transform
Diffstat (limited to 'AlienSurvival/Assets/Scripts')
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs10
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs9
-rw-r--r--AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs37
3 files changed, 52 insertions, 4 deletions
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
index b1139f2..b1ceaab 100644
--- a/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
@@ -32,14 +32,18 @@ public class TopDownTransformInspector : Editor
//https://answers.unity.com/questions/463207/how-do-you-make-a-custom-handle-respond-to-the-mou.html
private void OnSceneGUI()
{
+ Vector3 pos3d = m_TopDownTransform.Get3DPosition();
+
+ float arrowSize = 2f;
+
Handles.color = Handles.xAxisColor;
- m_TopDownTransform.x = EditorHandlesHelper.ScaleValue(m_TopDownTransform.x, m_TopDownTransform.Get3DPosition(), Vector3.right, 1f, Handles.ConeHandleCap, Quaternion.Euler(0, 90, 0), 1f, 0.1f);
+ m_TopDownTransform.x += EditorHandlesHelper.PositionArrow(pos3d, Vector3.right, 1f, arrowSize).x;
Handles.color = Handles.yAxisColor;
- m_TopDownTransform.y = EditorHandlesHelper.ScaleValue(m_TopDownTransform.y, m_TopDownTransform.Get3DPosition(), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+ m_TopDownTransform.y -= EditorHandlesHelper.PositionArrow(pos3d, Vector3.up, 1f, arrowSize).y;
Handles.color = Handles.zAxisColor;
- m_TopDownTransform.z = EditorHandlesHelper.ScaleValue(m_TopDownTransform.z, m_TopDownTransform.Get3DPosition() + new Vector3(0, -1.1f, 0), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+ m_TopDownTransform.z -= EditorHandlesHelper.PositionArrow(pos3d + new Vector3(0, -m_TopDownTransform.z - 0.1f, 0), Vector3.up, m_TopDownTransform.z, arrowSize, true).y;
}
diff --git a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
index 3bb51b1..d93a453 100644
--- a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
+++ b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
@@ -91,6 +91,15 @@ public class TopDownTransform : MonoBehaviour
return pos;
}
+ public Vector3 GetGround3DPosition()
+ {
+ Vector3 pos = new Vector3();
+ pos.x = m_LocalPosition.x;
+ pos.y = m_LocalPosition.y ;
+ pos.z = transform.position.z;
+ return pos;
+ }
+
#if UNITY_EDITOR
private void OnDrawGizmos()
{
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;
+ }
+
}