} // end CheckAttributeData public override void UnderAttack(IDamageData damage) { if (null == damage) return; // end if IRealData realData = new RealData(damage, m_charcterData); m_charcterData.Minus(realData); Vector2 screenPoint = SceneManager.mainCamera.camera.WorldToScreenPoint(character.helpTransform.position); Vector2 hud_pos; if (RectTransformUtility.ScreenPointToLocalPointInRectangle(SceneManager.mainCanvas.HUD_rectTRansform, screenPoint, SceneManager.mainCanvas.camera, out hud_pos)) { HUD_Damage hud = InstanceMgr.GetObjectManager().GetGameObject<HUD_Damage>(HUD_Damage.poolName); hud.SetNumber(realData.HP); hud.transform.SetParent(SceneManager.mainCanvas.HUD_rectTRansform, false); hud.transform.localPosition = hud_pos; hud.gameObject.SetActive(true); } // end if if (null != lockCharacter) return; // end if if (damage.hashID == SceneManager.mainCharacter.hashID) { LockCharacter(SceneManager.mainCharacter); return; } // end if ICharacter npc = SceneManager.characterManager.factory.GetNPCharacter(damage.hashID); if (null != npc) { LockCharacter(npc); } // end if } // end UnderAttack
public override void OnAttacked(CreatureStat attackerStat) { int damage = Mathf.Max(0, attackerStat.Attack - Defense); Hp -= damage; HUD_Damage HUDDamage = Managers.UI.MakeWorldSpaceUI <HUD_Damage>(); HUDDamage.transform.position = HUD_DamagePos.position; HUDDamage.GetComponent <TextMeshPro>().text = damage.ToString(); if (Hp <= 0) { Hp = 0; OnDead(attackerStat); } }