// Start is called before the first frame update void Start() { scoreS = GetComponent <ScoreTimerScript>(); score = scoreS.GetSessionScore(); ones = 0; tens = 0; hundreds = 0; DisplayScore(); }
// Update is called once per frame void Update() { directionTimer += Time.deltaTime; spawnDustTimer += Time.deltaTime; frameTimer += Time.deltaTime; startTimer += Time.deltaTime; if (frameTimer > 0.1f) { frameTimer = 0f; currentFrame = !currentFrame; if (currentFrame) { GetComponent <SpriteRenderer>().sprite = frames[0]; } else { GetComponent <SpriteRenderer>().sprite = frames[1]; } } GetComponent <Rigidbody2D>().velocity += direction * Time.deltaTime * 60f * 0.07f; float angleBetween = Vector3.SignedAngle(transform.up, GetComponent <Rigidbody2D>().velocity, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween * Time.deltaTime * 3f); if (directionTimer > directionMaxTimer) { directionTimer = 0f; GetComponent <Rigidbody2D>().velocity = Vector3.zero; RandomizeDirection(); } if (spawnDustTimer > spawnDustMaxTimer) { spawnDustTimer = 0f; GameObject go = Instantiate <GameObject>(dustPrefab); GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = shootDustSound; if (Random.Range(1f, 100f) < 50f) { go.transform.position = transform.position + transform.right * 0.1f; } else { go.transform.position = transform.position + transform.right * -0.1f; } } if (GetComponent <GemScript>().GetPlanet() == null && startTimer > 0.1f) { SpawnExplosion(); ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(15000 / sts.GetScoreScale()); Destroy(this.gameObject); } if (GetComponent <GemScript>().GetPlanet() != null) { startTimer = 0f; } }
// Update is called once per frame void Update() { stateTimer += Time.deltaTime; frameTimer += Time.deltaTime; startTimer += Time.deltaTime; if (planet == null) { planet = FindObjectOfType <PlanetScript>(); } if (planet == null && startTimer > 0.1f) { SpawnExplosion(); ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(15000 / sts.GetScoreScale()); Destroy(this.gameObject); } if (planet != null) { startTimer = 0f; } if (state == 0) { transform.RotateAround(Vector3.zero, Vector3.forward, -137.5f / 2f * Time.deltaTime); if (frameTimer > 0.1f) { frameTimer = 0f; currentFrame = !currentFrame; if (currentFrame) { GetComponent <SpriteRenderer>().sprite = frames[0]; } else { GetComponent <SpriteRenderer>().sprite = frames[1]; } } if (stateTimer > 2f) { state = 1; stateTimer = 0f; } } if (state == 1) { if (stateTimer > 0.3f) { state = 2; stateTimer = 0f; } } if (state == 2) { Dictionary <int, float> distances = new Dictionary <int, float>(); Dictionary <int, GameObject> prefabs = new Dictionary <int, GameObject>(); GemScript[] allGems = FindObjectsOfType <GemScript>(); state = 3; stateTimer = 0f; if (allGems.Length <= 0) { return; } foreach (GemScript gs in allGems) { float dist = (transform.position - gs.transform.position).magnitude; if (!distances.ContainsKey(gs.shape)) { distances.Add(gs.shape, dist); prefabs.Add(gs.shape, gs.gameObject); continue; } if (distances[gs.shape] > dist) { distances[gs.shape] = dist; prefabs[gs.shape] = gs.gameObject; } } int shapeMin = -1; float shapeMinDist = 0f; for (int i = -1; i <= 5; i++) { if (distances.ContainsKey(i) && distances[i] > shapeMinDist) { shapeMin = i; shapeMinDist = distances[i]; } } GameObject go = Instantiate <GameObject>(prefabs[shapeMin]); go.transform.position = transform.position * 0.83f; go.transform.localScale = go.transform.localScale * 0.1f; GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = shootSound; } if (state == 3) { if (stateTimer > 0.2f) { state = 0; stateTimer = 0f; } } }
// Update is called once per frame void Update() { if (Input.GetKeyDown("p") && false) { foreach (PlanetScript ps in phase1Planets) { if (ps != null && ps.gameObject != null) { Destroy(ps.gameObject); } } foreach (PlanetScript ps in phase2Planets) { if (ps != null && ps.gameObject != null) { Destroy(ps.gameObject); } } } if (phase == 1) { bool found = false; foreach (PlanetScript ps in phase1Planets) { if (ps != null && ps.gameObject != null) { found = true; break; } } if (!found) { foreach (RabbitAntigravBehavior rab in antigravRabbits) { rab.Explode(); ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(37500 / (sts.GetScoreScale() * 2)); phase2Parent.SetActive(true); FindObjectOfType <CannonScript>().ResetPlanets(); GemScript[] allGems = FindObjectsOfType <GemScript>(); for (int i = 0; i < allGems.Length; i++) { allGems[i].ResetPlanets(); } } phase = 2; } } else if (phase == 2) { if (phase2Parent.transform.position.y > 0f) { phase2Parent.transform.position -= Vector3.up * Time.deltaTime * 3f; } bool found = false; foreach (PlanetScript ps in phase2Planets) { if (ps != null && ps.gameObject != null) { found = true; break; } } if (!found) { phase = 3; Destroy(phase2Parent); hapiObject.SetActive(true); hapiObject.transform.localScale = new Vector3(1f, 1f, 1f) * 0.01f; ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(37500 / (sts.GetScoreScale() * 2)); FindObjectOfType <CannonScript>().ResetPlanets(); GemScript[] allGems = FindObjectsOfType <GemScript>(); for (int i = 0; i < allGems.Length; i++) { allGems[i].ResetPlanets(); } } } else if (phase == 3) { if (hapiObject == null) { ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.StopTimer(); sts.AddScore(37500 / sts.GetScoreScale()); phase = 4; } else { dyingHapi.transform.position = hapiObject.transform.position; dyingHapi.transform.rotation = hapiObject.transform.rotation; } } else { dyingHapi.SetActive(true); timer += Time.deltaTime; if (timer > 10f) { timer = 0f; FindObjectOfType <ScoreTimerScript>().SetHighScore(); if (DataTracker.GetSum() >= 1000000) { Instantiate <GameObject>(endingCutsceneB); } else { Instantiate <GameObject>(endingCutsceneA); } Instantiate <GameObject>(finalCutsceneControl); FindObjectOfType <ScoreTimerScript>().NextLevel(); } } }
// Update is called once per frame void Update() { PlanetScript planet = GetComponent <GemScript>().GetPlanet(); float maxGemDist = 10f; if (planet != null) { Vector2 towardsPlanet = planet.transform.position - transform.position; GetComponent <Rigidbody2D>().velocity = GetComponent <Rigidbody2D>().velocity + towardsPlanet.normalized * Time.deltaTime * GetComponent <Rigidbody2D>().mass; } if (targetPlanet == null) { SpawnExplosion(); ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(15000 / sts.GetScoreScale()); Destroy(this.gameObject); } if (state == 0) { spr.sprite = frames[0]; stateTimer += Time.deltaTime; if (stateTimer > 0.5f) { Vector3 addition = transform.up * 250f / 30f + transform.right * -100f / 30f; GetComponent <Rigidbody2D>().velocity += new Vector2(addition.x, addition.y); if (planet != null) { GetComponent <Rigidbody2D>().velocity += GetComponent <Rigidbody2D>().velocity *3f / (transform.position - planet.transform.position).magnitude; } stateTimer = 0f; state = 1; GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = jumpSound; } if (planet != null) { float angleBetween = Vector3.SignedAngle(transform.up, transform.position - planet.transform.position, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween * Time.deltaTime * 6f); GetComponent <Rigidbody2D>().velocity /= (transform.position - planet.transform.position).magnitude; } GemScript[] allGems = FindObjectsOfType <GemScript>(); float dist = maxGemDist; for (int i = 0; i < allGems.Length; i++) { float gemDist = (transform.position - allGems[i].transform.position).magnitude; if (allGems[i] != null && allGems[i].shape == 0 && gemDist < dist) { dist = gemDist; redGem = allGems[i]; } } if (redGem != null) { state = 2; stateTimer = 0f; GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = angrySound; } } if (state == 1) { spr.sprite = frames[3]; stateTimer += Time.deltaTime; if (stateTimer > 1.2f) { state = 0; stateTimer = 0f; } if (planet != null) { float angleBetween = Vector3.SignedAngle(transform.up, transform.position - planet.transform.position, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween * Time.deltaTime * 6f); } } if (state == 2) { float changeTime = 0.5f; spr.sprite = frames[2]; if (stateTimer < changeTime * 2f / 3f) { spr.sprite = frames[1]; } stateTimer += Time.deltaTime; if (redGem == null || (transform.position - redGem.transform.position).magnitude > maxGemDist) { state = 0; stateTimer = 0f; redGem = null; } else { float angleBetween = Vector3.SignedAngle(transform.up, redGem.transform.position - transform.position, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween); if (stateTimer > changeTime) { state = 3; stateTimer = 0f; } } } if (state == 3) { spr.sprite = frames[4]; if (redGem == null || (transform.position - redGem.transform.position).magnitude > maxGemDist) { state = 0; stateTimer = 0f; redGem = null; } else { float angleBetween = Vector3.SignedAngle(transform.up, redGem.transform.position - transform.position, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween); Vector3 addition = transform.up * Time.deltaTime * 20f; GetComponent <Rigidbody2D>().velocity += new Vector2(addition.x, addition.y); } } }
// Update is called once per frame void Update() { stateTimer += Time.deltaTime; startTimer += Time.deltaTime; directionTimer += Time.deltaTime; if (planet == null) { planet = FindObjectOfType <PlanetScript>(); } if (planet == null && startTimer > 0.1f) { SpawnExplosion(); ScoreTimerScript sts = FindObjectOfType <ScoreTimerScript>(); sts.AddScore(15000 / sts.GetScoreScale()); Destroy(portalLeft); Destroy(this.gameObject); } if (planet != null) { startTimer = 0f; } float angleBetween = Vector3.SignedAngle(transform.up, GetComponent <Rigidbody2D>().velocity, new Vector3(0f, 0f, 1f)); transform.RotateAround(transform.position, new Vector3(0f, 0f, 1f), angleBetween * Time.deltaTime * 3f); float throwSpeed = 5f; if (directionTimer > directionMaxTimer) { RandomizeDirection(); directionTimer = 0f; } if (state == 0) { GetComponent <Rigidbody2D>().velocity = direction * 4f; GetComponent <SpriteRenderer>().sprite = frames[0]; Debug.Log(portalLeft.transform.localPosition); portalLeft.GetComponent <Rigidbody2D>().velocity = Vector2.zero; portalLeft.transform.localPosition = portalOffset; if (stateTimer > 3f) { portalLeft.transform.SetParent(null); portalLeft.GetComponent <Rigidbody2D>().velocity = new Vector3(transform.up.x, transform.up.y) * -throwSpeed; state = 1; stateTimer = 0f; GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = shootSound; } } else { GetComponent <Rigidbody2D>().velocity = direction * 2f; GetComponent <SpriteRenderer>().sprite = frames[1]; Vector3 tow = (transform.position - portalLeft.transform.position).normalized; if (portalLeft.GetComponent <Rigidbody2D>().velocity.magnitude > throwSpeed) { portalLeft.GetComponent <Rigidbody2D>().velocity = portalLeft.GetComponent <Rigidbody2D>().velocity.normalized *throwSpeed; } portalLeft.GetComponent <Rigidbody2D>().velocity += new Vector2(tow.x, tow.y) * Time.deltaTime * 60f * 0.15f; if (stateTimer > 0.75f && (portalLeft.transform.position - transform.position).magnitude < 0.75f) { portalLeft.GetComponent <Rigidbody2D>().velocity = Vector2.zero; portalLeft.transform.SetParent(transform); portalLeft.transform.localPosition = portalOffset; state = 0; stateTimer = 0f; GameObject snd = Instantiate <GameObject>(soundPrefab); snd.GetComponent <SFXScript>().sfx = catchSound; } } }
// Update is called once per frame protected override void Update() { base.Update(); if (sts == null) { sts = FindObjectOfType <ScoreTimerScript>(); } if (targetObject != null) { sts.SetPortrait(1); GemScript[] availableGems = FindObjectsOfType <GemScript>(); minDist = 999999f; Vector3 targetPosition = transform.position; bool foundGem = false; for (int i = 0; i < availableGems.Length; i++) { if (availableGems[i] != null) { foundGem = true; Vector3 dist = availableGems[i].transform.position - transform.position; if (dist.magnitude < minDist) { minDist = dist.magnitude; targetPosition = availableGems[i].transform.position; } } } if (!foundGem) { Destroy(targetObject); } targetObject.transform.position = targetPosition; if (Input.GetAxis("Fire2") == 0) { SetupChain(); } } if (selectedGem != null) { sts.SetPortrait(1); Vector3 towardsGem = selectedGem.transform.position - transform.position; if (towardsGem.magnitude > minDist) { selectedGem.transform.position = transform.position + towardsGem.normalized * minDist; selectedGem.GetComponent <Rigidbody2D>().velocity *= 0.5f; } towardsGem = selectedGem.transform.position - transform.position; float chainAngle = Vector3.SignedAngle(Vector3.up, towardsGem, Vector3.forward); spawnedChain.transform.position = transform.position + towardsGem * 0.5f; spawnedChain.transform.rotation = Quaternion.Euler(0f, 0f, chainAngle); spawnedChain.transform.localScale = new Vector3(0.15f, towardsGem.magnitude * 1.4f, 0.15f); } else { if (spawnedChain != null) { Destroy(spawnedChain.gameObject); } } }