Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-05-26 13:04:38 +08:00
parent f74d7f1877
commit 5a0f1548ea
53 changed files with 4853 additions and 163 deletions

View File

@@ -0,0 +1,46 @@
using System.Collections;
using UnityEngine;
namespace BaseGames.Enemies.Boss
{
/// <summary>
/// 嘲风漂浮控制器:负责 Phase 2 进入时上浮、击落时下落的平滑位移。
/// 使用 Rigidbody2D.MovePosition 做帧级 Lerp 插值,避免物理穿墙。
/// </summary>
public class ChaoFengFloatController : MonoBehaviour
{
[SerializeField] private float _floatHeight = 5f;
[SerializeField] private float _riseDuration = 1.5f;
[SerializeField] private float _fallDuration = 0.8f;
[SerializeField] private Rigidbody2D _rb;
private float _groundY;
private void Start() => _groundY = transform.position.y;
/// <summary>上浮至悬空高度(切换为 Kinematic 后执行)。</summary>
public IEnumerator FloatUp()
{
_rb.bodyType = RigidbodyType2D.Kinematic;
_rb.velocity = Vector2.zero;
yield return TweenY(transform.position.y, _groundY + _floatHeight, _riseDuration);
}
/// <summary>下落回地面(落地后恢复 Dynamic。</summary>
public IEnumerator FallDown()
{
yield return TweenY(transform.position.y, _groundY, _fallDuration);
_rb.bodyType = RigidbodyType2D.Dynamic;
}
private IEnumerator TweenY(float from, float to, float duration)
{
for (float t = 0f; t < duration; t += Time.deltaTime)
{
_rb.MovePosition(new Vector2(transform.position.x, Mathf.Lerp(from, to, t / duration)));
yield return null;
}
_rb.MovePosition(new Vector2(transform.position.x, to));
}
}
}