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 + +} | 
