void UpdateSerchingDieActor() { if (m_TargetActor.ISDie) { int layermaskval = CalcManager.GetActorCampTypeTOLayerMask(m_TargetActor); Collider[] colliderarray = Physics.OverlapSphere(this.transform.position , AttackRange.SphereRadius + 10f , layermaskval); m_TargetActor = null; float minlength = float.MaxValue; foreach (var item in colliderarray) { BaseActor tempactor = item.GetComponent <BaseActor>(); if (tempactor != null) { float val = (tempactor.transform.position - this.transform.position).magnitude; if (minlength > val) { m_TargetActor = tempactor; } } } } }
public BaseActor AddPlayerActor(int p_index, E_Camp p_camp = E_Camp.MyCamp) { if (!ActorTableData.GetI.ISGetActortableData(p_index)) { Debug.LogErrorFormat("생성 할수 없음 : {0}", p_index); return(null); } BaseActor cloneactor = GameObject.Instantiate <BaseActor>(CloneActorData); cloneactor.ActorTableID = p_index; cloneactor.InitSettingData(p_index, p_camp); cloneactor.gameObject.SetActive(true); if (p_camp == E_Camp.MyCamp) { cloneactor.transform.SetParent(PlayerActorSpawn); } else if (p_camp == E_Camp.EnemyCamp) { cloneactor.transform.SetParent(EnemyActorSpawn); } else { Debug.LogErrorFormat(" 진영이 없습니다. "); } cloneactor.transform.localPosition = new Vector3(0f, 0f, 0f); return(cloneactor); }
public RangeAttackObject AddRangeAttackObject(BaseActor p_target, BaseActor p_attacker, AttackData p_attackdata) { RangeAttackObject attackobj = GameObject.Instantiate <RangeAttackObject>(CloneAttackObject); attackobj.Initlize(p_target, p_attacker, p_attackdata); return(attackobj); }
public void InitCollisionDetating(BaseActor p_linkactor, Action <BaseActor> p_callfn) { m_LinkActor = p_linkactor; m_CallFN = p_callfn; SphereRadius = GetComponent <SphereCollider>().radius; m_ISInit = true; }
public static int GetActorCampTypeTOLayerMask(BaseActor p_actor) { if (p_actor.MyCamp == E_Camp.Max) { Debug.LogErrorFormat("캠프타입이 이상함 2 : {0}, {1}", p_actor.name, p_actor.MyCamp); return(0); } return(LayerMask.GetMask(p_actor.MyCamp.ToString()));; }
void AttackCollistionEnter(BaseActor p_actor) { Debug.LogFormat("공격범위 녀석 : {0}, {1}", this.name , p_actor.name); if (m_TargetActor == null) { m_TargetActor = p_actor; } }
private void OnTriggerEnter(Collider p_other) { if (!m_ISInit) { return; } BaseActor otheractor = p_other.GetComponent <BaseActor>(); if (otheractor != null && otheractor.MyCamp != m_LinkActor.MyCamp) { m_CallFN(otheractor); } }
public void SetDamage(BaseActor p_attacker, float p_attackval) { if (p_attacker.ISDie) { // } m_ActorData.HP = (int)((float)m_ActorData.HP - p_attackval); if (m_ActorData.HP <= 0) { m_ActorData.HP = 0; this.gameObject.SetActive(false); } }
public void Attack1(E_AniCallType p_calltype) { AttackData attackdata = AttackDataArray[0]; if (attackdata.AttackRangeType == E_AttackRangeType.Meel) { if (attackdata.AttackMutiType == E_AttackMultiType.Single) { float attackval = m_ActorData.Attack + attackdata.AddAttackVal; m_TargetActor.SetDamage(this, attackval); } else if (attackdata.AttackMutiType == E_AttackMultiType.Multi) { float attackval = m_ActorData.Attack + attackdata.AddAttackVal; m_TargetActor.SetDamage(this, attackval); int layermaskval = CalcManager.GetActorCampTypeTOLayerMask(m_TargetActor); Collider[] colliderarray = Physics.OverlapSphere(m_TargetActor.transform.position , attackdata.MultiAttackRangeVal , layermaskval); attackval = attackval * attackdata.MultiAttackRangeDiv; foreach (var item in colliderarray) { BaseActor tempactor = item.GetComponent <BaseActor>(); if (tempactor) { tempactor.SetDamage(this, attackval); } } } } else if (attackdata.AttackRangeType == E_AttackRangeType.Range) { // 피사체 던지기 InGameBattleManager.GetI.AddRangeAttackObject(m_TargetActor, this, attackdata); } UpdateSerchingDieActor(); }
public static int GetCampTypeTOLayerIndex(BaseActor p_actor) { switch (p_actor.MyCamp) { case E_Camp.MyCamp: return(LayerMask.NameToLayer(p_actor.MyCamp.ToString())); break; case E_Camp.EnemyCamp: return(LayerMask.NameToLayer(p_actor.MyCamp.ToString())); break; default: Debug.LogErrorFormat("캠프타입이 이상함 : {0}, {1}", p_actor.name, p_actor.MyCamp); break; } return(0); }
public void Initlize(BaseActor p_targetActor, BaseActor p_attacker, AttackData p_attackdata) { if (m_LinkSprite == null) { m_LinkSprite = GetComponent <SpriteRenderer>(); } m_LinkAttackData = p_attackdata; m_TargetActor = p_targetActor; m_AttackerActor = p_attacker; m_MoveSpeed = m_LinkAttackData.RangeSpeedSec; m_LinkSprite.sprite = m_LinkAttackData.RangeSprite; if (m_LinkAttackData.RangeSpeedSec >= float.MaxValue - 100) { SetAttack(); } m_ISInit = true; transform.position = p_attacker.transform.position; }
public static float Damageval(BaseActor p_actor, BaseActor p_targetactor) { float outdamageval = 1f; return(outdamageval); }
void SerchingCollsionEnter(BaseActor p_actor) { Debug.LogFormat("서칭 범위 녀석 : {0}, {1}", this.name , p_actor.name); }