void Update() { if (!pawn.enabled) { return; } if (hatred is null || hatred.IsDead) { return; } if (atkTimer > 0f) { atkTimer -= Time.deltaTime; } Vector3 vec = hatred.transform.position - transform.position; if (vec.sqrMagnitude < me.SeachRadius * me.SeachRadius) // search target in circle { pawn.MoveBy(vec.normalized); pawn.TargetAt(hatred.transform.position); if (atkTimer <= 0f) // has targets in attack range { atkTimer = me.AttackCoolDown; claw.Attack(TeamMask.Hero, me.AttackDamage); } } }
void Update() { if (hero.IsDead) { return; } if (Input.GetMouseButtonDown(0)) { claw.PickAndDrop(); } Vector3 mov = new Vector3( Input.GetAxis(Const.Horizontal), Input.GetAxis(Const.Vertical), 0f ); pawn.MoveBy(mov); Vector3 mousePos = Input.mousePosition; mousePos.z = -Camera.main.transform.position.z; pawn.TargetAt(Camera.main.ScreenToWorldPoint(mousePos)); Vector3 firePlaceVec = GameCore.I.fireHeap.transform.position - transform.position; firePlaceVec.z = 0f; fireHeapPointerArrow.rotation = Quaternion.Euler(0f, 0f, Vector3.SignedAngle(Vector3.up, firePlaceVec, Vector3.forward)); float fireHeapDist = Vector3.Distance(transform.position, GameCore.I.fireHeap.transform.position); if (fireHeapDist > pointerArrowMinShowRange) { fireHeapPointerArrow.gameObject.SetActive(true); } else { fireHeapPointerArrow.gameObject.SetActive(false); } }