Beispiel #1
0
 // Used by wander to change the ghost's angle
 IEnumerator ChangeAngle()
 {
     while (movementState == MovementState.Wander)
     {
         MovementUtilityWander.changeDirection(this);
         yield return(new WaitForSeconds(timeBetweenAngleChange));
     }
 }
Beispiel #2
0
    // Moves the ghost according to its state
    private void move()
    {
        if (angleChangeCoroutine != null && movementState != MovementState.Wander)
        {
            StopCoroutine(angleChangeCoroutine);
            isWanderCoRunning = false;
        }
        switch (movementState)
        {
        case MovementState.Pursuit:
            // Pursue the closest object
            MovementUtilityArrive.SteerArrive(this, closestResettableObject.transform.position);
            break;

        case MovementState.Return:
            // Return the carried object
            MovementUtilityArrive.SteerArrive(this, carriedObject.OriginalPosition);
            // Drop the object if we're close enough to its original position
            if (Vector3.Distance(transform.position, carriedObject.OriginalPosition) < itemDropDistance)
            {
                ghostObjectInteraction.DropPickup();
                // These are now handled by the reseter
                //carriedObject.GetComponent<Rigidbody>().useGravity = true;
                //carriedObject.GetComponent<Collider>().isTrigger = false;
                carriedObject    = null;
                isCarryingObject = false;
            }
            break;

        case MovementState.AvoidingWall:
            // Pursue the closest object
            MovementUtilitySeek.SteerSeek(this, wallNormal);
            targetRotation = transform.rotation.eulerAngles;
            break;

        case MovementState.Wander:
            MovementUtilityWander.WanderForward(this);
            if (!isWanderCoRunning)
            {
                angleChangeCoroutine = StartCoroutine(ChangeAngle());
            }
            isWanderCoRunning = true;
            break;
        }
    }