Files
aibis-dream/Assets/Scripts/MiniGame/Engine/AirGate.cs
T
2024-12-30 00:43:22 +08:00

63 lines
1.6 KiB
C#

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<EngineSystem>();
}
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);
}
}
}