Example #1
0
    private void Move()
    {
        if (!moving)
        {
            weapons.ResumeAll();
            targetPosition = new Vector3(Random.Range(-55.0f, 55.0f), transform.position.y, Random.Range(-30.0f, 30.0f));
            if (GetComponent <Health>().getHealth() < GetComponent <Health>().maxHealth * 0.3f)
            {
                waitTimer -= Time.deltaTime;
            }
            if (waitTimer <= 0.0f)
            {
                moving    = true;
                waitTimer = waitTime;
            }
        }

        if (moving)
        {
            weapons.PauseAll();
            float   positionY = transform.position.y;
            Vector3 target    = Vector3.MoveTowards(transform.position, targetPosition, movementSpeed * Time.deltaTime);
            transform.position    = new Vector3(target.x, positionY, target.z);
            transform.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f);

            if (transform.position.x == targetPosition.x && transform.position.z == targetPosition.z)
            {
                moving = false;
                transform.eulerAngles = new Vector3(30.0f, 0.0f, 0.0f);
            }
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (surfaceTimer > 0)
        {
            camera.GetComponent <Shaker>().shake = false;

            surfaceTimer -= Time.deltaTime;
            if (surfaceTimer <= 0)
            {
                burrowTimer   = burrowTime;
                startPosition = transform.position;
                weapons.PauseAll();
            }
        }
        if (burrowTimer > 0)
        {
            camera.GetComponent <Shaker>().shake = true;
            camera.GetComponent <Shaker>().mag   = 0.05f;

            burrowTimer       -= Time.deltaTime;
            transform.position = Vector3.Lerp(startPosition, startPosition + (Vector3.down * burrowDepth), (burrowTime - burrowTimer) / burrowTime);
            if (burrowTimer <= 0)
            {
                transform.position = startPosition + (Vector3.down * burrowDepth);
                travelTimer        = timeToTravel;
                startPosition      = transform.position;
                burrowParticles.GetComponent <ParticleSystem>().Play();
                targetPosition = travelLocations[(int)Mathf.Floor(Random.Range(0, travelLocations.Length))];
                while (targetPosition.x == transform.position.x && targetPosition.z == transform.position.z)
                {
                    targetPosition = travelLocations[(int)Mathf.Floor(Random.Range(0, travelLocations.Length))];
                }
            }
        }
        if (travelTimer > 0)
        {
            camera.GetComponent <Shaker>().mag = 0.1f;

            travelTimer       -= Time.deltaTime;
            transform.position = Vector3.Lerp(startPosition, targetPosition, (timeToTravel - travelTimer) / timeToTravel);
            transform.position = new Vector3(transform.position.x, startPosition.y, transform.position.z);
            if (travelTimer <= 0)
            {
                transform.position = new Vector3(targetPosition.x, startPosition.y, targetPosition.z);
                startPosition      = transform.position;
                burrowParticles.GetComponent <ParticleSystem>().Stop();
                riseTimer = riseTime;
                anim.SetTrigger("Rise");
                float newRot = (Mathf.Atan2(transform.position.x, transform.position.z) * Mathf.Rad2Deg);
                transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, newRot, transform.localEulerAngles.z);
                risingParticles.Play();
            }
        }
        if (riseTimer > 0)
        {
            surfaceParticles.transform.position = new Vector3(surfaceParticles.transform.position.x, -0.5f, surfaceParticles.transform.position.z);
            camera.GetComponent <Shaker>().mag  = 0.3f;

            riseTimer         -= Time.deltaTime;
            transform.position = Vector3.Lerp(startPosition, startPosition + (Vector3.up * burrowDepth), (riseTime - riseTimer) / riseTime);
            if (riseTimer <= 0)
            {
                transform.position = startPosition + (Vector3.up * burrowDepth);
                startPosition      = transform.position;
                surfaceTimer       = surfaceTime;
                weapons.ResumeAll();
            }
        }
    }