public bool Hit(GameObject target, SkillCell skill = null) { atkAnimName = this.owner.name + "_atk"; UnitStats ownerStats = owner.GetComponent <UnitStats>(); UnitStats targetStats = target.GetComponent <UnitStats>(); if (!isMagic) { MPCost = 0; } if (ownerStats.realMP >= MPCost) { float currentAtkMultipilier = (Random.value * (maxAtkMultiplier - minAtkMultiplier)) + minAtkMultiplier; float damage = currentAtkMultipilier * (isMagic ? ownerStats.INT + float.Parse(skill.Data.damage) : ownerStats.ATK); damage = Mathf.Max(0, damage - targetStats.DEF * .25f); //播放伤害信息 messageBox.GetComponent <MessageManager>().SetAtkText(owner.name, target.name, damage, isMagic); //播放攻击动画 ownerStats.anim.Play(atkAnimName); StartCoroutine(ReceiveDamageWait(targetStats, damage, skill)); ownerStats.realMP -= MPCost; StartCoroutine("TurnWait"); return(true); } return(false); }
// Public public new void SetParam(BaseCell baseCell, BasePanel rootPanel) { base.SetParam(baseCell, rootPanel); if (baseCell is ItemCell) { ItemCell itemCell = baseCell as ItemCell; imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + itemCell.item.iconName); } if (baseCell is EquipCell) { EquipCell equipCell = baseCell as EquipCell; // Check Empty Cell if (equipCell.item == null) { Destroy(gameObject); return; } imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + equipCell.item.iconName); } if (baseCell is SkillCell) { SkillCell skillCell = baseCell as SkillCell; imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName); } }
public void SelectSkill(SkillCell skl) { //TO DO: 根据转递回来的参数设置PlayerUnitAction中的技能名 this.currentUnit.GetComponent <PlayerUnitAction>().useSkill = skl; if (this.currentUnit.GetComponent <UnitStats>().realMP < float.Parse(skl.Data.cost)) { Debug.Log("MP is not enough"); return; } this.skillLayer.SetActive(false); this.SelectAction(ActionType.MagicalAttack); }
IEnumerator ReceiveDamageWait(UnitStats targetStats, float damage, SkillCell skill = null) { yield return(new WaitForSeconds(0.5f)); if (skill != null) { //播放技能动画和音效 audioPlayer.PlayOneShot(skill.sound, 1); skillAnim.Play("ID-" + skill.Data.ID); } targetStats.ReceiveDamage(damage); Debug.Log("ReceiveDamageWait over. time passed 1 second"); }
// Public public void AddSkill(BaseSkill baseSkill) { foreach (SkillCell cell in listSkillCells) { if (cell.skill.name == baseSkill.name) { return; } } SkillCell skillCell = new SkillCell(); skillCell.skill = baseSkill; listSkillCells.Add(skillCell); }
public void Init(Unit caster) { // Test Needed this.caster = caster; for (int i = 0; i < 4; i++) { SkillCells[i] = new SkillCell(); SkillCells[i].Init(caster); // 设置初始技能 ISkill tmpSkill = SkillFactory.CreateSkill(caster.attributes.data.skills[i]); if (tmpSkill != null) { SkillCells[i].CurrentSkill = tmpSkill; } } }
public void Init(Unit caster) { // Test Needed this.caster = caster; for (int i = 0; i < 4; i++) { SkillCells[i] = new SkillCell(); SkillCells[i].Init(caster); // 设置初始技能 ISkill tmpSkill = ConcreteSkillFactory.CreateSkill(caster.attributes.data.skills[i]); if (tmpSkill != null) { SkillCells[i].CurrentSkill = tmpSkill; } } EventMgr.KeyDownEvent.AddListener(SwitchCell); EventMgr.MouseButtonDownEvent.AddListener(CellMouseBTNDown); EventMgr.MouseButtonUpEvent.AddListener(CellMouseBTNUp); }
// Public public void SetParam(HotBarCell hotBarCell, BasePanel rootPanel) { base.SetParam(baseCell, rootPanel); if (hotBarCell.baseCell == null) { imageInnerIcon.gameObject.SetActive(false); return; } if (hotBarCell.baseCell is ItemCell) { ItemCell itemCell = hotBarCell.baseCell as ItemCell; imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + itemCell.item.iconName); imageInnerIcon.gameObject.SetActive(true); } if (hotBarCell.baseCell is SkillCell) { SkillCell skillCell = hotBarCell.baseCell as SkillCell; imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName); imageInnerIcon.gameObject.SetActive(true); } }
// Public public void SetParam(SkillCell skillCell, BasePanel rootPanel) { base.SetParam(skillCell, rootPanel); imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName); }
/* * * Callback Methodes * */ void Awake() { skillCell = (SkillCell)target; }