private void HPLosted(float hurt, CharHandler srcHandler, SkillDataSon srcSkillDataSon = null) { //受击特效 SetEffect(srcSkillDataSon, _charHandler.m_ParentTrans.position); if (_charHandler.m_CharData.CurHP <= 0) { _charHandler.ToDead(); if (BattleEnum.Enum_CharType.Monster == _charHandler.m_CharData.m_eType) { BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromMonsterDead); } else { BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromHeroDead); } } if (BattleEnum.Enum_CharType.Monster == _charHandler.m_CharData.m_eType) { //击退 if (null != srcHandler && (null == srcSkillDataSon || srcSkillDataSon.m_Parent.m_bHitBackward)) { float t = Time.time; if (t - m_fBackwardClock > ApplicationConst.fBackwardCD) { Vector3 dir = (_charHandler.m_ParentTrans.position - srcHandler.m_ParentTrans.position).normalized * 1f; _charHandler.m_ParentTrans.Translate(dir, Space.World); m_fBackwardClock = t; } } } else { //全局加魔 _iLoseHpTemp += hurt; if (_iLoseHpTemp >= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent) { int mult = Mathf.FloorToInt(_iLoseHpTemp / (_charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent)); _iLoseHpTemp -= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercent * mult; BattleManager.GetInst().m_CharInScene.AddMPAll(_MPData.m_fAddMPFromHPLose * mult); } //单人加魔 _iLoseHpSingleTemp += hurt; if (_iLoseHpSingleTemp >= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle) { int mult = Mathf.FloorToInt(_iLoseHpSingleTemp / (_charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle)); _iLoseHpSingleTemp -= _charHandler.m_CharData.MaxHP * _MPData.m_fHPLosePercentSingle * mult; _charHandler.m_CharData.CurMP += _MPData.m_fAddMPFromHPLoseSingle * mult; } //损血Trigger BattleManager.GetInst().m_TriggerManager.HPChanged(Mathf.CeilToInt(_charHandler.m_CharData.CurHP * 100 / _charHandler.m_CharData.MaxHP), _charHandler); } }