Exemple #1
0
    // Teleport portal is instant
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (!doesSuck)
        {
            return;
        }

        if (doesTeleport)
        {
            var vel = collision.GetComponent <BallMovement>().getMagnitude();
            if (vel >= 1f)
            {
                suckEffect();
                teleportConnection.GetComponent <Portal>().suckEffect();

                ballVisuals.boundShake(collision.GetComponent <Rigidbody2D>().velocity.normalized, vel);
            }

            collision.transform.position = teleportConnection.position;
            collision.GetComponentInChildren <TrailRenderer>().Clear();
            Physics2D.IgnoreCollision(collision, teleportConnection.GetComponent <Collider2D>());
            StartCoroutine(reactivateTrigger(canTPbackDelay, teleportConnection.GetComponent <Collider2D>(), collision));
        }
    }
Exemple #2
0
    public void respawnPlayer(bool diedOnBounds, bool diedInHole)
    {
        if (!diedInHole)
        {
            if (!diedOnBounds)
            {
                Instantiate(respawnDust, player.transform.position, respawnDust.transform.rotation);
                screenshake.AddShake(Vector2.up, 0.5f);
            }
            else // Screenshake in appropriate dir
            {
                Vector3 pos = Camera.main.WorldToViewportPoint(player.transform.position);
                var     rot = 0;

                if (pos.x <= 0)
                {
                    rot   = 90;
                    pos.x = 0;
                    ballVis.boundShake(new Vector2(1, 0), player.GetComponent <BallMovement>().getMagnitude());
                }
                if (pos.y <= 0)
                {
                    pos.y = 0;
                    ballVis.boundShake(new Vector2(0, 1), player.GetComponent <BallMovement>().getMagnitude());
                }
                if (pos.x >= 1)
                {
                    rot   = -90;
                    pos.x = 1;
                    ballVis.boundShake(new Vector2(1, 0), player.GetComponent <BallMovement>().getMagnitude());
                }
                if (pos.y >= 1)
                {
                    rot   = 180;
                    pos.y = 1;
                    ballVis.boundShake(new Vector2(0, 1), player.GetComponent <BallMovement>().getMagnitude());
                }

                Instantiate(deadDust, Camera.main.ViewportToWorldPoint(pos), Quaternion.Euler(0, 0, rot));
            }
        }
        else // Vertical Screenshake
        {
            screenshake.AddShake(Vector2.up, 0.5f);
        }


        // Actually respawn player

        var dragInds = FindObjectsOfType <LineRenderer>();

        foreach (LineRenderer d in dragInds)
        {
            Destroy(d);
        }

        var orgPos = player.GetComponent <BallMovement>().getOrgPos();

        Destroy(player);
        player = Instantiate(playerPrefab, orgPos, Quaternion.identity);
        player.GetComponent <BallMovement>().notInTut();

        Instantiate(respawnDust, player.transform.position, respawnDust.transform.rotation);
    }