// Update is called once per frame void Update() { if (currentState == gameState.Playing) { // spawn asteroids if (creationDelay > 0) { creationDelay -= 1; } else { spawnAsteroid(); creationDelay = 135; } // player death if (deathTimer > 0) { deathTimer -= 1; } else if (deathTimer == 0) { deathTimer = -1; // enter the game over state currentState = gameState.Gameover; gameOverMenu.SetActive(true); highScoreMenu.GetComponent <HighScoreMenu>().logScore(gameScore); ScreenManip.screenShake(0.06f, 12); // clear out all asteroids GameObject[] asteroids = GameObject.FindGameObjectsWithTag("Asteroid"); for (var i = 0; i < asteroids.Length; i++) { Destroy(asteroids[i]); } } } }
// input, movement, collisions void Update() { // update trail trailPos = pos; pos = transform.position; if (trailDelay > 0) { trailDelay -= 1; } // input if (Input.GetMouseButtonDown(0)) { // set buffer clickBuffer = 10; } if (clickBuffer > 0) { clickBuffer -= 1; // test for dash avail. if (!dashing) { Vector2 clickPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (distance(clickPos, pos) > 0.8f) { // clamp cursor position Vector2 pointToClick = (clickPos - pos); pointToClick.Normalize(); pointToClick *= 0.8f; clickPos = (pos + pointToClick); } if (Mathf.Abs(clickPos.x) <= 0.7f && Mathf.Abs(clickPos.y) <= 0.7f) { target = clickPos; dashing = true; Vector3 vel = (clickPos - pos); vel.Normalize(); Instantiate(burst, transform.position + (vel * -0.08f), Quaternion.Euler(90f, 0f, transform.localEulerAngles.z)); } } } // movement if (dashing) { if (distance(target, pos) >= dashSpeed) { // move towards target Vector2 dashOffsets = target - pos; dashOffsets.Normalize(); dashOffsets *= dashSpeed; transform.position += ((Vector3.right * dashOffsets.x) + (Vector3.up * dashOffsets.y)); // move afterimage orangeChild.transform.position = Vector3.zero + (Vector3.right * trailPos.x) + (Vector3.up * trailPos.y); } else { // stop dashing transform.position = target; dashing = false; pos = target; aegis = 10; } // trail particles if (trailDelay == 0) { Instantiate(trail, transform.position, Quaternion.Euler(90f, 0f, 0f)); trailDelay = 4; } } else { // rotate to cursor position Vector3 lookPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); float angle = -Mathf.Atan2((lookPoint.x - pos.x), (lookPoint.y - pos.y)) * Mathf.Rad2Deg; transform.localEulerAngles = (Vector3.zero + (zUp * angle)); // move afterimage Vector2 pos2D = orangeChild.transform.position; if (pos2D != target) { orangeChild.transform.position = target; } orangeChild.transform.position = transform.position + ScreenManip.getOffset(0); blueChild.transform.position = transform.position + ScreenManip.getOffset(1); } // aegis if (aegis > 0) { aegis -= 1; } // collisions var collisions = Physics2D.BoxCastAll(pos, size, 0f, Vector2.zero, 0f, mask); if (collisions.Length > 0) { // colliding with an asteroid for (var i = 0; i < collisions.Length; i++) { GameObject collided = collisions[i].transform.gameObject; AsteroidControl astrCont = collided.GetComponent <AsteroidControl>(); if (astrCont.getAegis() == 0) { if (dashing) { // break asteroid astrCont.setAegis(9); astrCont.breakApart(); ScreenManip.screenShake(0.03f, 6); } else if (aegis == 0) { // die and start respawn sequence GameControl.playerDie(120); Instantiate(smallDebris, transform.position, Quaternion.Euler(90f, 0f, 0f)); ScreenManip.screenShake(0.06f, 12); } } } } }
void Update() { // Apply screenshake menuOrange.transform.position = transform.position + (ScreenManip.getOffset(0) * 300f); menuBlue.transform.position = transform.position + (ScreenManip.getOffset(1) * 300f); }
void Update() { // Apply screenshake orangeText.transform.position = initPos + (ScreenManip.getOffset(0) * 200f); blueText.transform.position = initPos + (ScreenManip.getOffset(1) * 200f); }