// 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)); } }
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); }