Beispiel #1
0
 void Start()
 {
     approaching = false;
     inputLocked = false;
     modeLocked = false;
     mode = EntityBehaviour.movementModes.Medium;
     defaultMode = mode;
 }
Beispiel #2
0
 void ValidateApproach()
 {
     /* If coroutine is running stop it and restore the mode. */
     if (approaching)
     {
         StopCoroutine(approachCoroutine);
         mode = defaultMode;
     }
     else
     {
         approaching = true;
     }
 }
Beispiel #3
0
    IEnumerator HoldModeCoroutine(EntityBehaviour.movementModes tempMode, float duration)
    {
        float elapsed = 0.0f;
        mode = tempMode;
        modeLocked = true;

        while (elapsed <= duration)
        {
            elapsed += Time.deltaTime;
            yield return null;
        }

        modeLocked = false;
        mode = defaultMode;
    }
Beispiel #4
0
    /* Approaches a static target with custom movement mode. */
    IEnumerator ApproachCoroutine(Vector3 target, EntityBehaviour.movementModes moveMode)
    {
        mode = moveMode;
        Vector3 dir = target - transform.position;
        Vector3 heightDiff = new Vector3(0.0f, target.y - transform.position.y, 0.0f);
        dir.y = 0;

        while (Vector3.Distance(transform.position + heightDiff, target) > touchDist)
        {
            Move (dir.x, dir.z);
            Rotate (dir);
            yield return null;
        }

        approaching = false;
        unlockInput();
        mode = defaultMode;
    }
Beispiel #5
0
 public void SetBehaviour(EntityBehaviour beh)
 {
     behaviour = beh;
     mode = behaviour.movementMode;
 }
Beispiel #6
0
    /* 	Move one frame worth of movement in the forward direction. Preserves mode. Doesn't preserve direction.
        Reports the distance traveled. */
    public float Move(EntityBehaviour.movementModes moveMode)
    {
        EntityBehaviour.movementModes oldMode = mode;
        mode = moveMode;

        float dist = Move(transform.forward.x, transform.forward.z);

        mode = oldMode;
        return dist;
    }
Beispiel #7
0
    /* 	Move one frame worth of movement. Preserves mode. Doesn't preserve direction.
        Reports the distance traveled. */
    public float Move(Vector3 dir, EntityBehaviour.movementModes moveMode)
    {
        // Save the old mode, then set the new mode
        EntityBehaviour.movementModes oldMode = mode;
        mode = moveMode;

        // Perform the movement and rotation
        float dist = Move (dir.x, dir.z);
        Rotate(dir.x, dir.z);

        // Restore old mode
        mode = oldMode;
        return dist;
    }