private void Check(Component other) { if (triggering) { return; } if (other.gameObject.CompareTag("Ball")) { if (playerMulti == 1) { var hitter = theBall.LastToucher(); if (dudes.Contains(hitter)) { gameStats.CompleteChallenge(2); } } triggering = true; Invoke(nameof(NextRound), 0.75f); var lt = theBall.GetHitter(); if (dudes.Contains(lt)) { lt.partner.SayNice(Random.Range(0.2f, 0.5f)); } return; } var d = other.GetComponentInParent <Dude>(); if (!d) { return; } if (dudes.Contains(d)) { if (playerMulti == 1) { gameStats.CompleteChallenge(5); } d.ReturnHome(); } }
public void End(bool won, int total) { overviewCam.SetActive(true); if (won) { if (total >= 15) { gameStats.CompleteChallenge(3); } if (total == 5) { gameStats.CompleteChallenge(9); } if (matchTime >= 5 * 60f) { gameStats.CompleteChallenge(4); } if (matchTime < 120f) { gameStats.CompleteChallenge(8); } if (gameStats.WasSolo()) { gameStats.CompleteChallenge(10); } if (swingCount == 0) { gameStats.CompleteChallenge(11); } gameStats.GetData().wins++; ShowInfo("YOU WON!"); Invoke(nameof(OnEnd), 2f); gameStats.CompleteChallenge(0); gameStats.CheckFive(); } else { gameStats.GetData().losses++; ShowInfo("YOU LOST!"); Invoke(nameof(BackToMenu), 3f); AudioManager.Instance.ToMenu(); SendScore(); } gameStats.Save(); }
private void OnCollisionEnter2D(Collision2D other) { var mag = other.relativeVelocity.magnitude; var dude = other.gameObject.GetComponentInParent <Dude>(); var p = other.contacts[0].point; if (dude && dude.direction > 0) { gameStats.AddToucher(dude); } if (mag > 1f) { AudioManager.Instance.PlayEffectAt(0, p, Mathf.Clamp(mag * 0.3f, 0f, 10f)); } if ((other.gameObject.CompareTag("Ground") || other.gameObject.CompareTag("Net")) && mag > 7f) { EffectManager.Instance.AddEffect(1, p); if (mag > 5) { cam.BaseEffect(Mathf.Clamp(mag * 0.01f, 0f, 0.5f)); } } if (!other.gameObject.CompareTag("Hand") && !other.gameObject.CompareTag("Net") && homingAmount > 0f) { ClearHoming(); } if (mag > 3f) { var amount = Mathf.Clamp(mag * 0.02f, 0f, 0.25f); var normal = other.contacts[0].normal; var x = normal.x < normal.y ? 1f + amount : 1f - amount; var y = normal.x > normal.y ? 1f + amount : 1f - amount; transform.parent.localScale = new Vector3(x, y, 1); } if (homingAmount > 0f && other.gameObject.CompareTag("Hand") && dude && dude != lastHit) { gameStats.CompleteChallenge(7); } if (mag > effectLimit) { cam.BaseEffect(other.relativeVelocity.magnitude * 0.01f); EffectManager.Instance.AddEffect(0, body.position); if (other.gameObject.CompareTag("Hand")) { if (other.relativeVelocity.magnitude > 5f) { EffectManager.Instance.AddEffect(2, other.contacts[0].point); } if (mag > 20f && stopCooldown <= 0f && other.rigidbody.velocity.magnitude > 12f) { body.angularVelocity = 500f * (0.5f + dude.GetRawStat(Stat.Spin) * 0.25f) * dude.direction; stopCooldown = 0.5f; Time.timeScale = 0f; this.StartCoroutine(() => Time.timeScale = 1f, 1f / 60f); if (body.angularVelocity > 550f && dude.direction > 0) { gameStats.CompleteChallenge(6); } if (dude && dude.partner == lastHit) { if (dude.direction > 0) { gameStats.CompleteChallenge(1); } AddHoming(dude.GetStat(Stat.Super), dude.direction); dude.partner.SayNice(Random.Range(0.2f, 0.4f)); AudioManager.Instance.PlayEffectAt(10, body.position, 1f); AudioManager.Instance.PlayEffectAt(9, body.position, 0.465f); AudioManager.Instance.PlayEffectAt(22, body.position, 0.759f); AudioManager.Instance.PlayEffectAt(16, body.position, 1f); AudioManager.Instance.PlayEffectAt(15, body.position, 1f); } } if (!lastHitNoReset) { hitter = dude; } if (lastHitNoReset && Math.Abs(lastHitNoReset.direction - dude.direction) > 0.1f) { hitter = lastHitNoReset; } lastHit = dude; if (dude) { lastHitNoReset = dude; } CancelInvoke(nameof(ResetLastTouch)); Invoke(nameof(ResetLastTouch), dude.GetStat(Stat.Super)); } } if (mag > 10f) { EffectManager.Instance.AddEffect(0, other.contacts[0].point); } }