void Start() { anim = GameObject.FindWithTag("Player").GetComponent <Animator>(); currentHp = PlayerStatusInfo.Instance().maxHp; currentMp = PlayerStatusInfo.Instance().maxMp; currentExp = 0; }
/// <summary> /// 升级解锁技能监听 /// </summary> public void ListenToUnlockSkill() { switch (PlayerStatusInfo.Instance().rank) { case 2: AddOneSkillById(4001); AddOneSkillById(4002); AddOneSkillById(4003); break; } }
/// <summary> /// 在zombie的attack动画中添加event片段,执行此函数,对player造成等同于zombie攻击力数值的伤害 /// </summary> public void Attack() { if (PlayerStatusManager.Instance().currentHp > 0) { PlayerStatusManager.Instance().ReduceHp(attackPower - (int)(PlayerStatusInfo.Instance().def * 0.2f)); } }
/// <summary> /// 减少玩家属性值(装备) /// </summary> /// <param name="info"></param> public void ReduceProperties(ObjectInfo info) { PlayerStatusInfo.Instance().attack -= info.attack; PlayerStatusInfo.Instance().def -= info.def; PlayerStatusInfo.Instance().speed -= info.speed; //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 加Mp /// </summary> /// <param name="num">加Mp数量</param> public void AddMp(int num) { currentMp = Mathf.Clamp(currentMp += num, 0, PlayerStatusInfo.Instance().maxMp); damageText2.text = "MP+" + num.ToString(); damageText2.color = Color.blue; GameObject obj = Instantiate(damageObj2, damageObj2.transform.position, damageObj2.transform.rotation); obj.transform.parent = colli.transform; }
/// <summary> /// 加Hp /// </summary> /// <param name="num">加Hp数量</param> public void AddHp(int num) { currentHp = Mathf.Clamp(currentHp += num, 0, PlayerStatusInfo.Instance().maxHp); damageText.text = "HP+" + num.ToString(); damageText.color = Color.green; GameObject obj = Instantiate(damageObj, damageObj.transform.position, damageObj.transform.rotation); obj.transform.parent = colli.transform; }
/// <summary> /// 增加等级,属性,点数 /// </summary> /// <param name="num">升级数目(默认1)</param> public void AddRankAndProp(int num = 1) { PlayerStatusInfo.Instance().rank += num; SkillBoard.Instance().ListenToUnlockSkill(); PlayerStatusInfo.Instance().attack += 5; PlayerStatusInfo.Instance().def += 3; PlayerStatusInfo.Instance().speed += 1; AddPoint(5); }
/// <summary> /// 增加Exp /// </summary> /// <param name="num">增加Exp数目</param> public void AddExp(int num) { currentExp += num; //升级 if (currentExp >= PlayerStatusInfo.Instance().maxExp) { AddRankAndProp(1); BoardManager.Instance().SwitchShowBoard(BoardManager.BoardShow.UPGRADEBOARD); currentExp -= PlayerStatusInfo.Instance().maxExp; } }
void Update() { //根据当前Hp/Mp/Exp和最大Hp/Mp/Exp百分比控制hp/Mp/Exp条百分比 hpSlider.value = ((float)currentHp / (float)PlayerStatusInfo.Instance().maxHp); hpNum.text = currentHp.ToString(); mpSlider.value = ((float)currentMp / (float)PlayerStatusInfo.Instance().maxMp); mpNum.text = currentMp.ToString(); expSlider.value = ((float)currentExp / (float)PlayerStatusInfo.Instance().maxExp); expNum.text = currentExp.ToString(); rankNum.text = PlayerStatusInfo.Instance().rank.ToString(); }
/// <summary> /// 减少玩家属性值(技能) /// </summary> /// <param name="type">技能加持buff类型</param> /// <param name="num">buff数值</param> public void ReduceProperties(SkillInfo.SkillEffectType type, int num) { switch (type) { case SkillInfo.SkillEffectType.ATTACK: PlayerStatusInfo.Instance().attack -= num; break; case SkillInfo.SkillEffectType.DEF: PlayerStatusInfo.Instance().def -= num; break; case SkillInfo.SkillEffectType.SPEED: PlayerStatusInfo.Instance().speed -= num; break; } //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 增加玩家属性值(加点) /// </summary> /// <param name="selectName">点击的加点按钮明名称</param> /// <param name="num">默认一次加10点</param> public void AddProperties(string selectName, int num = 10) { switch (selectName) { case "AtkButton": PlayerStatusInfo.Instance().attack += num; break; case "DefButton": PlayerStatusInfo.Instance().def += num; break; case "SpButton": PlayerStatusInfo.Instance().speed += num; break; } //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 增加玩家属性值(技能) /// </summary> /// <param name="type">技能加持buff类型</param> /// <param name="num">buff数值</param> public void AddProperties(SkillInfo.SkillEffectType type, int num) { Debug.Log(type.ToString()); switch (type) { case SkillInfo.SkillEffectType.ATTACK: PlayerStatusInfo.Instance().attack += num; break; case SkillInfo.SkillEffectType.DEF: PlayerStatusInfo.Instance().def += num; break; case SkillInfo.SkillEffectType.SPEED: PlayerStatusInfo.Instance().speed += num; break; } //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 扣Hp /// </summary> /// <param name="num">扣Hp数量</param> public void ReduceHp(int num) { currentHp = Mathf.Clamp(currentHp -= num, 0, PlayerStatusInfo.Instance().maxHp); damageText.text = "HP-" + num.ToString(); damageText.color = Color.white; GameObject obj = Instantiate(damageObj, damageObj.transform.position, damageObj.transform.rotation); obj.transform.parent = colli.transform; //一般情况下只有扣血时才会死 if (currentHp <= 0) { Global.playerState = Global.State.DieState; colli.enabled = false; cc.enabled = false; anim.SetBool("Die", true); } }
//被攻击逻辑 void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Weapon") { Debug.Log("被攻击"); switch (AttackController.Instance().atkState) { case AttackController.AttackState.FIRST: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.firstAtkPowerPercent); break; case AttackController.AttackState.SECOND: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.secondAtkPowerPercent); break; case AttackController.AttackState.THIRD1: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.thirdAtkPower1Percent); break; case AttackController.AttackState.THIRD2: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.thirdAtkPower2Percent); break; case AttackController.AttackState.THIRD3: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.thirdAtkPower3Percent); break; case AttackController.AttackState.THIRD4: BeDamage(PlayerStatusInfo.Instance().attack *AttackController.thirdAtkPower4Percent); break; } } }
/// <summary> /// 穿戴情况处理 /// </summary> /// <param name="id">要穿戴装备id</param> /// <returns>成功穿戴return true</returns> public bool WearEquipmentById(int id) { ObjectInfo info = ObjectsInfo.Instance().GetObjectInfoById(id); if (info.suittype != PlayerStatusInfo.Instance().playertype) { return(false); } GridOfEquip tempGrid = null; switch (info.weartype) { case ObjectInfo.WearType.Headgear: tempGrid = headgear; break; case ObjectInfo.WearType.Armor: tempGrid = armor; break; case ObjectInfo.WearType.Hand: tempGrid = hand; AppearChange.Instance().SwitchWeaponAppear(id); break; //目前只有武器可更换外观 case ObjectInfo.WearType.Accessory: tempGrid = accessory; break; case ObjectInfo.WearType.Shoe: tempGrid = shoe; break; } //对应装备栏已经有装备的情况,先卸下装备,使装备栏空且物品栏加入改装备 if (tempGrid.id != 0) { tempGrid.UnloadThisGridEquip(); Debug.Log("脱"); } //向空的装备栏中添加装备 Debug.Log("穿"); GameObject equipNewItem = NGUITools.AddChild(tempGrid.gameObject, newEquip); equipNewItem.transform.localPosition = Vector3.zero; equipNewItem.GetComponent <UISprite>().depth = 2; tempGrid.SetThisGridEquipById(id, info); return(true); }
/// <summary> /// 更新一次面板信息显示 /// </summary> public void UpdateStatusShow() { hpNum.text = PlayerStatusInfo.Instance().maxHp.ToString(); mpNum.text = PlayerStatusInfo.Instance().maxMp.ToString(); atkNum.text = PlayerStatusInfo.Instance().attack.ToString(); defNum.text = PlayerStatusInfo.Instance().def.ToString(); spNum.text = PlayerStatusInfo.Instance().speed.ToString(); pointNum.text = PlayerStatusInfo.Instance().point.ToString(); if (PlayerStatusInfo.Instance().point > 0) { foreach (GameObject eachButton in addPointButtons) { eachButton.SetActive(true); } } else { foreach (GameObject eachButton in addPointButtons) { eachButton.SetActive(false); } } }
public void ReducePoint(int num = 1) { PlayerStatusInfo.Instance().point -= num; //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 增加升级点数 /// </summary> /// <param name="num">增加数量(默认5)</param> public void AddPoint(int num = 5) { PlayerStatusInfo.Instance().point += num; //更新一次玩家信息界面显示 StatusBoard.Instance().UpdateStatusShow(); }
/// <summary> /// 使用物品加Hp和Mp /// </summary> /// <param name="info">使用的物品的ObjectInfo</param> public void AddHpAndMp(ObjectInfo info) { currentHp = Mathf.Clamp(currentHp += info.hp, 0, PlayerStatusInfo.Instance().maxHp); currentMp = Mathf.Clamp(currentMp += info.mp, 0, PlayerStatusInfo.Instance().maxMp); }