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); } } }
// 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(); } } }