public void DefaultAction(PointerEventData pointerEventData, GameObject interactingObject, string interactingObjectType) { switch (interactingObjectType) { case "Ground": attackTarget = null; target = WorldController_.GetMouseWorldPosition(); break; case "Item": attackTarget = null; StoreItem(interactingObject.GetComponent <Item_>()); break; case "Tree": attackTarget = null; break; case "NPC": attackTarget = interactingObject; Attack(attackTarget.GetComponent <Unit_>()); break; default: break; } }
public void Attack(Unit_ unit) { if (stats_.hp >= 0) { attackTarget = unit.gameObject; if (WorldController_.DistanceBetween(owner.transform.position, unit.transform.position) < 0.5) { LookAt(unit.transform.position); GetUnitAnimator().SetTrigger("isAttacking"); GetEquippedItemAnimators().ForEach(t => t.SetTrigger("isAttacking")); SyncAnimators(); } else { StartCoroutine(RefreshTargetEvery()); } } }
public override IEnumerator RefreshTargetEvery() { while (true) { if (attackTarget != null) { targetAttackDistance = WorldController_.DistanceBetween(owner.transform.position, attackTarget.transform.position); if (targetAttackDistance <= visualPerception_.visualDistance && stats_.hp > 0) { target = attackTarget.transform.position; } else { attackTarget = null; } } yield return(new WaitForSeconds(0.1f)); } }
public bool IsTargetReached() { return((WorldController_.DistanceBetween(target, unitRigidBody2D.position) < 0.4) ? true : false); }