92 lines
2.2 KiB
C#
92 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class CharacterHp : MonoBehaviour
|
|
{
|
|
public GameObject EndUI;
|
|
|
|
//UI
|
|
public Image headImage;
|
|
private float maxHp;
|
|
public Slider hpBar;
|
|
public Text bossName;
|
|
public Text hpText;
|
|
public Text atk;
|
|
|
|
private Animator _animator;
|
|
private BossAI bossAI;
|
|
private CharacterCombat charComba;
|
|
private void Awake()
|
|
{
|
|
hpBar.value = 1;
|
|
}
|
|
public void Init(BossAI ai)
|
|
{
|
|
_animator = ai._animator;
|
|
headImage.overrideSprite = ai._info.bossHead;
|
|
maxHp = ai.maxHp;
|
|
hpText.text = maxHp + "/" + maxHp;
|
|
|
|
bossAI = ai;
|
|
bossName.text = ai._info.bossName;
|
|
ai.OnHit += OnUpdate;
|
|
}
|
|
public void Init(CharacterCombat ch)
|
|
{
|
|
_animator = ch._animator;
|
|
maxHp = ch.maxHp;
|
|
hpText.text = ch.currentHp + "/" + maxHp;
|
|
charComba = ch;
|
|
atk.text = ch.attack.ToString();
|
|
bossName.text = PlayerInfo.Instance.info.playerName;
|
|
ch.OnHit += OnUpdate;
|
|
}
|
|
|
|
private void OnUpdate(float hp)
|
|
{
|
|
if(bossAI==null)
|
|
{
|
|
maxHp = charComba.maxHp;
|
|
atk.text = charComba.attack.ToString();
|
|
}
|
|
hpBar.value = hp/maxHp;
|
|
hpText.text = hp + "/" + maxHp;
|
|
if (hp<=0)
|
|
{
|
|
_animator.Play("die");
|
|
hpText.text = "0/" + maxHp;
|
|
if (charComba==null)//¹ÖÎչʾÖÕ½áUI
|
|
{
|
|
EndUI.SetActive(true);
|
|
StartCoroutine(StartTimer(1f));
|
|
}
|
|
else
|
|
{
|
|
UIManager.Instance.Show<UIGameOver>();
|
|
}
|
|
}
|
|
}
|
|
IEnumerator StartTimer(float t)
|
|
{
|
|
yield return new WaitForSeconds(t);
|
|
|
|
EndUI.SetActive(false);
|
|
yield return new WaitForSeconds(t);
|
|
|
|
//½±Àø
|
|
UIManager.Instance.Show<UILottery>();
|
|
PlayerInfo.Instance.BagMgr.AddItem(1, 2);
|
|
PlayerInfo.Instance.BagMgr.AddItem(0, 2);
|
|
PlayerInfo.Instance.info.exp += 2000;
|
|
PlayerInfo.Instance.LevelUp();
|
|
PlayerInfo.Instance.OnUpdateLevel?.Invoke();
|
|
//
|
|
|
|
this.gameObject.SetActive(false);
|
|
|
|
}
|
|
}
|