Files
XMen/Assets/Scripts/EnergyPump.cs
2025-08-15 18:20:42 +08:00

147 lines
3.7 KiB
C#

using DG.Tweening;
using DragonLi.Core;
using Mirror;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnergyPump : NetworkBehaviour
{
public SphereCollider sphere;
public int energyPumpTag;
public GameObject txt;
[NonSerialized]
public int HpIndex;
public void ColliderEnergyPump()
{
//在访问组件前检查对象是否已被销毁
if (this == null || sphere == null)
{
return;
}
GameManager.Ins.EnergyPumpFillAmount += 0.2f;
EventDispatcher.TriggerEvent("ChangeEnergyPumpUI", GameManager.Ins.EnergyPumpFillAmount);
sphere.enabled = false;
transform.gameObject.SetActive(false);
//仅在对象违背销毁时执行销毁操作
if (this != null)
{
NetworkServer.Destroy(transform.gameObject);
}
}
public void ShowLandMask()
{
switch (energyPumpTag)
{
case 1:
GameManager.Ins?.ShowLandmark(2, 3);
GameManager.Ins.HudMessage(1);
break;
case 2:
GameManager.Ins.HudMessage(2);
GameManager.Ins?.ShowLandmark(4, 5);
break;
case 3:
GameManager.Ins.ShowLandmark(7, 8);
GameObject rockfall = GameManager.Ins.GenerateRockfall(new Vector3(6f, 22.3f, 3.26f), new Vector3(-90, 0, 0));
CoroutineTaskManager.Instance.WaitSecondTodo(() =>
{
NetworkServer.Destroy(rockfall);
}, 5.0f);
GameManager.Ins.HudMessage(4);
break;
case 4:
GameManager.Ins.ShowLandmark(9, 10);
GameManager.Ins.HudMessage(5);
break;
case 5:
GameManager.Ins.ShowLandmark(11, 12);
GameManager.Ins.HudMessage(6);
break;
}
}
//private CoroutineTask _waitTask;//引用协程字段
public void Init(int energyPumpTag)
{
this.energyPumpTag = energyPumpTag;
//originalPos = transform.localPosition;
HpIndex = 10;
CoroutineTaskManager.Instance.WaitSecondTodo(() =>
{
Over();
}, 10f);
}
public void Over()
{
//检查对象是否存在
if (this == null)
{
return;
}
AudioManager.Ins?.SoundPlayOneShot("TouchEnergyPump", false);
ShowLandMask();
EventDispatcher.TriggerEvent("NextTrriger");
ColliderEnergyPump();
Debug.Log("过关");
}
//private void Update()
//{
// txt.transform.parent.GetComponent<Transform>().LookAt(GameInit.Ins.MRCamera.transform);
//}
//public void ApplyDamage(float value, object info, Transform _sender)
//{
// HpIndex--;
// if (HpIndex <= 0)
// {
// Over();
// return;
// }
// Shake();
//}
//private Tween shakeTween;
//[Header("Shake Settings")]
//public float duration = 0.5f; // 抖动持续时间
//public float strength = 0.5f; // 抖动强度
//public int vibrato = 20; // 抖动的振动次数
//private bool isShaking = false;
//private Vector3 originalPos;
//public void Shake()
//{
// if (isShaking) return;
// Debug.Log("返回抖动效果");
// isShaking = true;
// shakeTween = transform.DOShakePosition(duration, strength, vibrato)
// .OnComplete(() =>
// {
// transform.localPosition = originalPos;
// isShaking = false;
// });
//}
//public float Health { get; set; }
}