Beispiel #1
0
    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);
    }
Beispiel #4
0
    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();
        }
    }