diff options
Diffstat (limited to 'AlienSurvival/Assets/Scripts/Test/TestFakeHeight.cs')
-rw-r--r-- | AlienSurvival/Assets/Scripts/Test/TestFakeHeight.cs | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/AlienSurvival/Assets/Scripts/Test/TestFakeHeight.cs b/AlienSurvival/Assets/Scripts/Test/TestFakeHeight.cs new file mode 100644 index 0000000..4cc13d1 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Test/TestFakeHeight.cs @@ -0,0 +1,132 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +//[ExecuteInEditMode] +public class TestFakeHeight : MonoBehaviour +{ + [SerializeField] private Transform m_Shadow; + [SerializeField] private Vector3 m_Coord; + + + public float height { + get + { + return m_Height; + } + set + { + m_Height = value; + } + } + [SerializeField] private float m_Height; // current fake height + + public float x + { + get + { + return transform.position.x; + } + + set + { + Vector3 pos = transform.position; + pos.x = value; + transform.position = pos; + } + } + + public float y + { + get + { + return transform.position.y - m_Height; + } + set + { + Vector3 pos = transform.position; + pos.y = value + m_Height; + transform.position = pos; + } + } + + public Vector3 position + { + get + { + Vector3 pos = new Vector3(x, y, height); + return pos; + } + set + { + height = value.z; // height先设置 + x = value.x; + y = value.y; + } + } + + public Vector2 positionOnGround + { + get + { + Vector2 pos = new Vector2(x, y); + return pos; + } + set + { + x = value.x; + y = value.y; + } + } + + private SpriteRenderer m_SpriteRenderer; + + private void OnEnable() + { + m_SpriteRenderer = GetComponent<SpriteRenderer>(); + } + + private void Start() + { + Project(); + } + + void Project() + { + Vector3 pos = transform.position; + pos.y = y + height; + transform.position = pos; + + if (m_Shadow != null) + { + m_Shadow.position = new Vector3(transform.position.x, transform.position.y - m_Height, transform.position.z); + } + + // 根据y设置sortOrder + m_SpriteRenderer.sortingOrder = (int)(-y * 100); + } + + void Update() + { + Project(); + } + +#if UNITY_EDITOR + + private void OnDrawGizmos() + { + // dash line + Vector3 start = transform.position; + Vector3 end = start - new Vector3(0, m_Height, 0); + + Handles.DrawDottedLine(start, end, 1f); + Handles.DrawWireCube(end, new Vector3(0.1f, 0.1f, 0f)); + + } + +#endif + +} |