// Update is called once per frame
    // Feeds back length info
    public int WormMove(Vector3 pos, float dist)
    {
        Vector3 delta = pos - transform.position;

        transform.forward  = delta;
        transform.position = pos - (delta.normalized * dist);
        if (Next)
        {
            return(1 + Next.WormMove(transform.position, dist));
        }
        else
        {
            return(1);
        }
    }
Beispiel #2
0
 // Update is called once per frame
 void Update()
 {
     ai.enabled = FirstPerson.GUN_AQUIRED;
     //return;
     if (first != null)
     {
         int l = first.WormMove(transform.position, dist);
         if (timer > 0 && l <= enrageLength)
         {
             timer -= Time.deltaTime;
             if (timer <= 0)
             {
                 first.WormShoot(fireDelay);
                 timer = fireRate;
             }
         }
     }
     else
     {
         timer -= Time.deltaTime;
         if (timer <= 0)
         {
             if (enrageState)
             {
                 ai.Speed   = speed * 1.5f;
                 ai.Agility = 0;
             }
             else
             {
                 ai.Speed   = 0;
                 ai.Agility = agility * 1.75f;
             }
             timer       = finalEnragePeriod;
             enrageState = !enrageState;
         }
         if (enrageState && FirstPerson.PLAYER != null)
         {
             Vector3 target = transform.position;
             target.y           = FirstPerson.PLAYER.transform.position.y;
             transform.position = Vector3.MoveTowards(transform.position, target, speed / 3 * Time.deltaTime);
         }
     }
 }