//技能命中时 private IEnumerator OnSkillDamage(BattleUnitSkillResult skillResult) { if (skillResult == null) { yield return(null); } //播放掉血特效 EffectDamageLabel damageEffect = EffectManager.Instance.CreateEffectByName <EffectDamageLabel>(EGameConstL.Effect_DamageLabel, EffectPlayType.WorldPosition); if (damageEffect != null) { damageEffect.SortingLayer = EGameConstL.SortingLayer_Battle_Effect; damageEffect.gameObject.SetActive(true); damageEffect.transform.position = unitRenderer.transform.position; damageEffect.SetDamage(skillResult.syncAttribute.hpChanged, skillResult.battleSkill.damageType); } //更新血条 skillResult.battleUnit.battleUnitRenderer.RefreshAttribute(skillResult.syncAttribute); //判断是否跪了 if (skillResult.syncAttribute.currentHP <= 0) { yield return(EGameConstL.WaitForHalfSecond); //离场 yield return(skillResult.battleUnit.battleUnitRenderer.PlayDefeatedAction()); } }
//刷新生命值显示 private void RefreshAttribute(BattleHeroSyncAttribute attribute, bool isEnterBattleField) { if (attribute == null) { return; } battleUnitInfo.text = string.Format("BU_{0}_{1}", battleUnit.battleTeam.teamID, battleUnit.battleUnitID); //刷新生命值 HealthBar.UpdateHealth(attribute.currentHP, battleUnit.maxHp); //刷新下显示 if (linkedUnitInfoView != null) { linkedUnitInfoView.SetArguments(battleUnit.mapGrid, battleUnit.hp > 0 ? battleUnit : null); } //不是进入战场 if (!isEnterBattleField) { //播放掉血特效 EffectDamageLabel damageEffect = EffectManager.Instance.CreateEffectByName <EffectDamageLabel>(EGameConstL.Effect_DamageLabel, EffectPlayType.WorldPosition); if (damageEffect != null) { damageEffect.SortingLayer = EGameConstL.SortingLayer_Battle_Effect; damageEffect.gameObject.SetActive(true); damageEffect.transform.position = unitRenderer.transform.position; damageEffect.SetDamage(attribute.hpChanged); } } }
private void PlayDamageLabel(int value, BattleSkillDamageType damageType) { //播放掉血特效 EffectDamageLabel damageEffect = EffectManager.Instance.CreateEffectByName <EffectDamageLabel>(EGameConstL.Effect_DamageLabel, EffectPlayType.WorldPosition); if (damageEffect != null) { damageEffect.SortingLayer = EGameConstL.SortingLayer_Battle_Effect; damageEffect.gameObject.SetActive(true); damageEffect.transform.position = unitRenderer.transform.position; damageEffect.SetDamage(value, damageType); } }
//受到技能伤害 private void OnSkillDamage(BattleHeroSkillResult skillResult) { if (skillResult == null) { return; } //播放掉血特效 EffectDamageLabel damageEffect = EffectManager.Instance.CreateEffectByName <EffectDamageLabel>(EGameConstL.Effect_DamageLabel, EffectPlayType.WorldPosition); if (damageEffect != null) { damageEffect.SortingLayer = EGameConstL.SortingLayer_Battle_Effect; damageEffect.gameObject.SetActive(true); damageEffect.transform.position = unitRenderer.transform.position; damageEffect.SetDamage(skillResult.syncAttribute.hpChanged, skillResult.battleSkill.damageType); } }