示例#1
0
    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();
        }
    }
示例#2
0
    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();
    }
示例#3
0
    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);
        }
    }