111 lines
2.6 KiB
C#
111 lines
2.6 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
|
|||
|
public class PlayerObject : MonoBehaviour
|
|||
|
{
|
|||
|
//<2F>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD>ɵ<EFBFBD>
|
|||
|
public RectTransform feijianPos;
|
|||
|
//Ѫ<><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>
|
|||
|
public RectTransform damagePos;
|
|||
|
//Ѫ<><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public RectTransform imgUserHp;
|
|||
|
//Ѫ<><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public Text txtUserHp;
|
|||
|
|
|||
|
private PlayerData player;
|
|||
|
|
|||
|
//<2F><>ǰѪ<C7B0><D1AA>
|
|||
|
private int hp;
|
|||
|
private float hpWide = 240f;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public bool isDead = false;
|
|||
|
|
|||
|
//<2F><>¼<EFBFBD><C2BC>һ<EFBFBD>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
private float frontTime;
|
|||
|
|
|||
|
void OnEnable()
|
|||
|
{
|
|||
|
player=GameDataMgr.Instance.player;
|
|||
|
hp = player.hp;
|
|||
|
}
|
|||
|
|
|||
|
void Start()
|
|||
|
{
|
|||
|
EventCenter.Instance.AddEventListener<MonsterData>(E_EventType.E_Player_Wound,Wound);
|
|||
|
}
|
|||
|
|
|||
|
// Update is called once per frame
|
|||
|
void Update()
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʲôʱ<C3B4><CAB1>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (isDead)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (GameMgr.Instance.isStopAtk)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ʱ <20><EFBFBD><CDB9><EFBFBD>
|
|||
|
if (Time.time - frontTime >= player.atkTime)
|
|||
|
{
|
|||
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD>ι<EFBFBD><CEB9><EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1>
|
|||
|
frontTime = Time.time;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
GameObject obj = PoolMgr.Instance.GetObj("Object/FeiJian");
|
|||
|
obj.transform.SetParent(feijianPos, false);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
public void Wound(MonsterData monster)
|
|||
|
{
|
|||
|
if (isDead)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA>
|
|||
|
hp = hp+player.def-monster.atk;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
GameObject go = PoolMgr.Instance.GetObj("Object/DamageNum");
|
|||
|
go.transform.SetParent(damagePos, false);
|
|||
|
go.GetComponent<DamageNum>().UpdateTxtInfo((monster.atk - player.def).ToString());
|
|||
|
|
|||
|
if (hp <= 0)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
isDead = true;
|
|||
|
UpdateHp(0);
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܿ<EFBFBD>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
this.gameObject.SetActive(false);
|
|||
|
return;
|
|||
|
}
|
|||
|
UpdateHp(hp);
|
|||
|
}
|
|||
|
|
|||
|
private void UpdateHp(int hp)
|
|||
|
{
|
|||
|
imgUserHp.sizeDelta = new Vector2(hpWide*hp / player.hp , imgUserHp.sizeDelta.y);
|
|||
|
txtUserHp.text = hp + "/" + player.hp;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public void UpdatePanel()
|
|||
|
{
|
|||
|
imgUserHp.sizeDelta = new Vector2(hpWide, imgUserHp.sizeDelta.y);
|
|||
|
txtUserHp.text = player.hp + "/" + player.hp;
|
|||
|
hp=player.hp;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5>¼<EFBFBD>
|
|||
|
void OnDestroy()
|
|||
|
{
|
|||
|
EventCenter.Instance.Claer(E_EventType.E_Player_Wound);
|
|||
|
}
|
|||
|
}
|