using AibisDream.Framework; using UnityEngine; namespace AibisDream { public class AirGate : MonoBehaviour, IMoveable { private EngineSystem _engineSystem; [SerializeField] private int curLevel; [SerializeField] private float heightY; [SerializeField] private float minY; public bool IsBlock { get; } private void Awake() { _engineSystem = transform.parent.GetComponent(); } public void StartMove() { // Debug.Log("Move"); } public void Move(Vector2 mousePos) { SwitchAirLevel(mousePos.y); UpdateTransform(); } private void UpdateTransform() { float levelHeight = heightY / (_engineSystem.config.maxLevel - 1); var curY = levelHeight * curLevel + minY; transform.localPosition = new Vector3(transform.localPosition.x, curY, transform.localPosition.z); } private void SwitchAirLevel(float mouseY) { mouseY -= minY + transform.parent.position.y; float levelHeight = heightY / _engineSystem.config.maxLevel; curLevel = (int)(mouseY / levelHeight); if (curLevel >= _engineSystem.config.maxLevel) curLevel = _engineSystem.config.maxLevel - 1; if (curLevel < 0) curLevel = 0; } public void MoveToLevel(int level) { curLevel = level - 1; UpdateTransform(); } public void StopMove() { _engineSystem.UpdateAirLevel(curLevel); } } }