From e3ffaf333f0cf198af908fe8e69619aa77b9903c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 14 一月 2026 18:13:13 +0800
Subject: [PATCH] 287 【公会】BOSS讨伐
---
Main/System/Guild/GuildBossWin.cs | 148 ++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 140 insertions(+), 8 deletions(-)
diff --git a/Main/System/Guild/GuildBossWin.cs b/Main/System/Guild/GuildBossWin.cs
index 979e6ec..65535f8 100644
--- a/Main/System/Guild/GuildBossWin.cs
+++ b/Main/System/Guild/GuildBossWin.cs
@@ -36,7 +36,7 @@
[SerializeField] Button atkBtn;
[SerializeField] Image angerAtk; //鎬掓皵鏀诲嚮
[SerializeField] Transform normalAtk; //鏅�氭敾鍑�
- [SerializeField] UIEffectPlayer atkEffect; //鏅�氭敾鍑荤壒鏁� 0娆′笉鏄剧ず
+ [SerializeField] UIEffectPlayer atkEffect; //鏅�氭敾鍑荤壒鏁� 0娆′笉鏄剧ず 鎸夐挳鐢�
[SerializeField] Text normalAtkCntText; //鏅�氭敾鍑绘鏁�
[SerializeField] Text atkCDText; //鏀诲嚮cd
[SerializeField] Transform addTimesRect;
@@ -55,6 +55,15 @@
[SerializeField] Transform attackArea3;
[SerializeField] GuildBossOtherPlayer otherPlayer; //鍒涘缓澶氫釜鐢�
[SerializeField] GuildBossOtherPlayerAttack otherPlayerAttack; //鍒涘缓澶氫釜鐢�
+
+ //鑷繁鐨勬敾鍑�
+ [SerializeField] UIEffectPlayer hurtEffect;
+ [SerializeField] UIEffectPlayer hurtAngerEffect;
+ [SerializeField] Text[] hurtValues;
+ [SerializeField] Text[] awardValues;
+ [SerializeField] Image[] awardIcons;
+ [SerializeField] Transform pos1;
+ [SerializeField] Transform pos2;
[SerializeField] Transform fakeRedBZ;
[SerializeField] Transform fakeRedAward;
@@ -79,15 +88,21 @@
{
UIManager.Instance.OpenWindow<GuildBossAwardWin>();
});
+
+ bossModel.Create(GuildBossManager.Instance.bossSkinID, 1, motionName: "chuxian");
+ heroModel.Create(PhantasmPavilionManager.Instance.GetMyModelSkinID(), 1.5f);
}
protected override void OnPreOpen()
{
+
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
GuildBossManager.Instance.BossHurtEvent += BossHurtEvent;
+ GuildBossManager.Instance.AtkResultEvent += AtkResultEvent;
Display();
+ InitAttack();
}
protected override void OnPreClose()
@@ -95,7 +110,14 @@
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
GuildBossManager.Instance.BossHurtEvent -= BossHurtEvent;
+ GuildBossManager.Instance.AtkResultEvent -= AtkResultEvent;
+
}
+ protected override void NextFrameAfterOpen()
+ {
+ SoundPlayer.Instance.PlayUIAudio(28);
+ }
+
void Display()
@@ -108,8 +130,7 @@
nameText.text = PlayerDatas.Instance.baseData.PlayerName;
BossHurtEvent();
- bossModel.Create(GuildBossManager.Instance.bossSkinID);
- heroModel.Create(PhantasmPavilionManager.Instance.GetMyModelSkinID());
+
}
//鎴樺姏鍙樺寲
@@ -304,11 +325,11 @@
curLayer = (int)bossAction.Value3;
}
- if (curLayer >= GuildBossManager.Instance.bzMaxLevel)
- {
- SysNotifyMgr.Instance.ShowTip("GuildBoss2");
- return;
- }
+ // if (curLayer >= GuildBossManager.Instance.bzMaxLevel)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("GuildBoss2");
+ // return;
+ // }
if (GuildBossManager.Instance.m_BuZhenState == 1)
{
SysNotifyMgr.Instance.ShowTip("GuildBoss1");
@@ -371,4 +392,115 @@
ShowDynamicUI();
}
+ void AtkResultEvent()
+ {
+ //1. 鐜╁浠巔os1 绉诲姩鍒皃os2
+ //2. 鎾斁鏀诲嚮鍔ㄤ綔 - 鏄剧ず瀵瑰簲绫诲瀷鐗规晥
+ //3. 寤惰繜100姣椋樿鐗╁搧
+ heroModel.onComplete = null;
+ heroModel.PlayAnimation("run");
+ heroModel.transform.localPosition = pos1.localPosition;
+ heroModel.transform.DOLocalMove(pos2.localPosition, 0.3f).OnComplete(() =>
+ {
+ ShowDmg().Forget();
+ });
+
+ }
+
+ async UniTask ShowDmg()
+ {
+ heroModel.onComplete = () =>
+ {
+ heroModel.transform.localPosition = pos1.localPosition;
+ };
+ heroModel.PlayAnimation("attack");
+ if (GuildBossManager.Instance.atkResult.AtkType == 0)
+ {
+ hurtEffect.Play();
+ }
+ else
+ {
+ hurtAngerEffect.Play();
+ }
+ bossModel.PlayAnimation("hit");
+ bossModel.onComplete = () =>
+ {
+ bossModel.PlayAnimation("idle", true);
+ bossModel.onComplete = null;
+ };
+
+ for (int i = 0; i < hurtValues.Length; i++)
+ {
+ if (i < GuildBossManager.Instance.atkResult.HurtCount)
+ {
+ int index = i;
+ hurtValues[i].SetActive(true);
+ var tween = hurtValues[i].GetComponent<PositionTween>();
+ tween.SetStartState();
+ tween.Play(() =>
+ {
+ hurtValues[index].SetActive(false);
+ });
+ var hurtData = GuildBossManager.Instance.atkResult.HurtList[i];
+ BattleDmg dmg = new BattleDmg()
+ {
+ damage = hurtData.HurtValue + hurtData.HurtValueEx * Constants.ExpPointValue,
+ attackType = hurtData.IsSuper == 1 ? (int)DamageType.CritDamage : 2
+ };
+ hurtValues[i].text = BattleUtility.DisplayDamageNum(dmg);
+ await UniTask.Delay(100);
+ }
+ else
+ {
+ hurtValues[i].SetActive(false);
+ }
+ }
+
+ for (int i = 0; i < awardValues.Length; i++)
+ {
+ if (i < GuildBossManager.Instance.atkResult.ItemCount)
+ {
+ var itemData = GuildBossManager.Instance.atkResult.ItemList[i];
+ awardValues[i].SetActive(true);
+ var tween = hurtValues[i].GetComponent<PositionTween>();
+ tween.SetStartState();
+ int index = i;
+ tween.Play(() =>
+ {
+ awardValues[index].SetActive(false);
+ });
+
+
+ awardValues[i].text = itemData.Count.ToString();
+ awardIcons[i].SetItemSprite((int)itemData.ItemID);
+ await UniTask.Delay(100);
+ }
+ else
+ {
+ awardValues[i].SetActive(false);
+ }
+ }
+
+ }
+
+ void InitAttack()
+ {
+ for (int i = 0; i < hurtValues.Length; i++)
+ {
+ hurtValues[i].SetActive(false);
+ }
+
+ for (int i = 0; i < awardValues.Length; i++)
+ {
+ awardValues[i].SetActive(false);
+ }
+
+ heroModel.transform.localPosition = pos1.localPosition;
+ bossModel.onComplete = () =>
+ {
+ bossModel.PlayAnimation("idle", true);
+ bossModel.onComplete = null;
+ };
+ bossModel.PlayAnimation("chuxian");
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0