private void ChaseTarget(StateControllerShip controller) { Vector2 direction = (controller.chaseTarget.position - controller.transform.position).normalized; float distance = (controller.chaseTarget.position - controller.transform.position).magnitude; controller.shipMover.Rotate(direction); if (distance > controller.stoppingDistance) { controller.shipMover.MoveForward(); } }
private bool InLosingRange(StateController controller) { StateControllerShip controllerS = controller as StateControllerShip; float distance = (controllerS.chaseTarget.position - controllerS.transform.position).magnitude; if (distance <= controllerS.loseRange) { return(true); } return(false); }
private bool InDetectionRange(StateController controller) { StateControllerShip controllerS = controller as StateControllerShip; Collider2D[] hits; hits = Physics2D.OverlapCircleAll(controllerS.transform.position, controllerS.shipDetectionDistance); Debug.Log(hits.Length); for (int i = 0; i < hits.Length; i++) { Debug.Log(i); if (hits[i].GetComponent <MultiTag>().HasTag("Player")) { controllerS.chaseTarget = hits[i].transform; return(true); } } return(false); }
private void Patrol(StateController controller) { StateControllerShip controllerS = controller as StateControllerShip; Vector2 wpDirection = (controllerS.wayPoint.position - controller.transform.position).normalized; float distance = (controllerS.wayPoint.position - controller.transform.position).magnitude; if (distance > controllerS.stoppingDistance) { controllerS.shipMover.Rotate(wpDirection); controllerS.shipMover.MoveForward(); } else { controllerS.NextWaypoint(); controllerS.shipMover.Rotate(wpDirection); controllerS.shipMover.MoveForward(); } }