void FixedUpdate() { //Get all collissions with the portal int hitCount = teleportCol.GetContacts(colliderHits); for (int i = 0; i < hitCount; i++) { Transform hitTransform = colliderHits[i].transform; Collider2D hitCollider = colliderHits[i]; (Sign enter, Sign exit)side; side.enter = GetSignSide(hitTransform.position); //One way is on and if (oneWay && side.enter == (flipSide?-1:1)) { EssentialFuncs.IgnoreCollision(hitCollider, teleportCol); break; } //Create a copy of the enterer GameObject mirrorCopy = InstantiateAMirrorCopy(hitCollider); void Teleport() { side.exit = GetSignSide(hitTransform.position); if (side.enter != side.exit) { hitTransform.position = mirrorCopy.transform.position; } Destroy(mirrorCopy); EssentialFuncs.IgnoreCollision(hitCollider, link.teleportCol); } IEnumerator ICRoutine = EssentialFuncs.IgnoreCollisionRoutine(teleportCol, colliderHits[i]); ICRoutine.AddEvents(Teleport); } }