Exemple #1
0
 void Start()
 {
     passEnum          = GetComponent <AIScript2>();
     animator          = GetComponent <Animator>();
     lastWaypointIndex = waypoints.Count - 1;                                            //minusing by 1 because waypoints system starts at 0
     targetWaypoint    = waypoints[targetWaypointIndex];                                 //matching the transform to the waypointsindex
     currentWaypointAI = WaypointAI.Introduction;
 }
Exemple #2
0
    void UpdateTargetWaypoint()
    {
        if (targetWaypointIndex > lastWaypointIndex)                                                //if the last target waypoint has been reached this object will stop
        {
            animator.SetInteger("Action", 0);
            targetWaypointIndex      = 7;
            passEnum.currentAIStates = AIScript2.AIStates.InspectingDoor;
            currentWaypointAI        = WaypointAI.Introduction;
            targetWaypointIndex      = 0;
        }

        targetWaypoint = waypoints[targetWaypointIndex];                                            //this will update a new target waypoint if the previous waypoint has been reached
    }
Exemple #3
0
    void Update()
    {
        movementStep = speed * Time.deltaTime;
        switch (currentWaypointAI)
        {
        case WaypointAI.Introduction:
            //calcuating direction for AI to face door
            Vector3    directionToDoor = doorTransform.position - transform.position;
            Quaternion rotateToDoor    = Quaternion.LookRotation(directionToDoor);
            animator.SetInteger("Action", 1);
            transform.rotation = rotateToDoor;
            transform.position = Vector3.MoveTowards(transform.position, frontOfDoor.position, movementStep);
            if (Vector3.Distance(transform.position, frontOfDoor.position) <= 0.2f)
            {
                currentWaypointAI = WaypointAI.Idle;
            }
            break;

        case WaypointAI.Idle:
            animator.SetInteger("Action", 0);
            break;

        case WaypointAI.Roaming:
            animator.SetInteger("Action", 1);
            distance = Vector3.Distance(transform.position, targetWaypoint.position);
            CheckDistanceToWaypoint(distance);
            //calcuating direction to waypoints
            Vector3    directionToWaypoint = targetWaypoint.position - transform.position;
            Quaternion rotationToTarget    = Quaternion.LookRotation(directionToWaypoint);
            transform.rotation = rotationToTarget;
            transform.position = Vector3.MoveTowards(transform.position, targetWaypoint.position, movementStep);
            break;

        case WaypointAI.ExitPortal:
            //calcuating direction for AI to face door
            Vector3    directionToPortal = portalTransform.position - transform.position;
            Quaternion rotateToPortal    = Quaternion.LookRotation(directionToPortal);
            animator.SetInteger("Action", 1);
            transform.rotation = rotateToPortal;
            transform.position = Vector3.MoveTowards(transform.position, portalTransform.position, movementStep);
            if (Vector3.Distance(transform.position, portalTransform.position) <= 0.2f)
            {
                currentWaypointAI = WaypointAI.Idle;
            }
            break;
        }
    }