Files
aibis-dream/Assets/Scripts/FixSystemNew/BodyModule/CuttingManager.cs
T
2025-05-20 19:28:58 +08:00

105 lines
3.6 KiB
C#

using UnityEngine;
using AibisDream;
using AibisDream.FixSystem;
using Cinemachine;
using AibisDream.Framework;
using AibisDream.Kit;
using UnityEditor.Localization.Plugins.XLIFF.V12;
namespace AibisDream
{
public class CuttingManager : MonoBehaviour
{
[Header("切割组件")]
public GameObject gearFollowerPrefab;
private GearFollower gearFollower;
private bool isCuttingMode = false;
private BodyModule _targetModule;
private SpriteRenderer _targetSpriteRenderer;
private void Awake()
{
// 注册
FixSystemCenter.SystemDic.Register(this);
var virtualCam1 = transform.Find("Cut Emo Camera").GetComponent<ICinemachineCamera>();
var virtualCam2 = transform.Find("Cut Memory Camera").GetComponent<ICinemachineCamera>();
var virtualCam3 = transform.Find("Cut Logic Camera").GetComponent<ICinemachineCamera>();
var virtualCam4 = transform.Find("Cut Emo Deep Camera").GetComponent<ICinemachineCamera>();
var virtualCam5 = transform.Find("Cut Memory Deep Camera").GetComponent<ICinemachineCamera>();
var virtualCam6 = transform.Find("Cut Logic Deep Camera").GetComponent<ICinemachineCamera>();
CameraKit.Instance.RegisterCamera(CameraEnum.CutEmo, virtualCam1);
CameraKit.Instance.RegisterCamera(CameraEnum.CutMemory, virtualCam2);
CameraKit.Instance.RegisterCamera(CameraEnum.CutLogic, virtualCam3);
CameraKit.Instance.RegisterCamera(CameraEnum.CutEmoDeep, virtualCam4);
CameraKit.Instance.RegisterCamera(CameraEnum.CutMemoryDeep, virtualCam5);
CameraKit.Instance.RegisterCamera(CameraEnum.CutLogicDeep, virtualCam6);
}
private void Update()
{
if (isCuttingMode && gearFollower != null)
{
gearFollower.GearUpdate();
}
}
public void StartCutting(BodyModule targetModule)
{
// 检查参数
if (targetModule == null)
{
Debug.LogError("targetModule 为空");
return;
}
// 保存目标模块
_targetModule = targetModule;
// 获取目标精灵渲染器
_targetSpriteRenderer = targetModule.GetCutSpriteRenderer();
if (_targetSpriteRenderer == null)
{
Debug.LogError("targetSprite 为空");
return;
}
// 停止之前的切割
StopCutting();
// 设置切割模式
isCuttingMode = true;
// 创建GearFollower
Vector3 SpawnPosition = new Vector3(Screen.width / 2f, Screen.height / 4f, 0);
GameObject gearFollowerObj = Instantiate(gearFollowerPrefab, SpawnPosition, Quaternion.identity);
gearFollower = gearFollowerObj.GetComponent<GearFollower>();
gearFollower.Init(_targetSpriteRenderer);
}
public void OnCutComplete()
{
isCuttingMode = false;
if (gearFollower != null)
{
gearFollower.FinishCutting();
}
}
public void UpdateModule()
{
if (_targetModule != null)
{
_targetModule.OnCuttingDown();
}
}
public void StopCutting()
{
isCuttingMode = false;
if (gearFollower != null)
{
Destroy(gearFollower.gameObject);
gearFollower = null;
}
}
}
}