using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestFakeHeight : MonoBehaviour { [SerializeField] private Transform m_Shadow; 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; } } public Vector2 positionOnGround { get { Vector2 pos = new Vector2(x, y); return pos; } set { x = value.x; y = value.y; } } private float m_PreHeight; private SpriteRenderer m_SpriteRenderer; private void OnEnable() { m_SpriteRenderer = GetComponent(); } private void Start() { m_PreHeight = 0; Project(); } void Project() { Vector3 pos = transform.position; pos.y = pos.y - m_PreHeight + m_Height; transform.position = pos; if (m_Shadow != null) { m_Shadow.position = new Vector3(transform.position.x, transform.position.y - m_Height, transform.position.z); } m_PreHeight = m_Height; // ¸ù¾ÝyÉèÖÃsortOrder m_SpriteRenderer.sortingOrder = (int)(-y * 100); } void Update() { Project(); } }