void FixedUpdate() { if (currentlyOverlappingObject != null) { var currentDot = Vector3.Dot(transform.up, currentlyOverlappingObject.transform.position - transform.position); if (currentDot < 0) // only transport the player once he's moved across plane { currentlyOverlappingObject.Teleport(this.transform, receiver.transform); currentlyOverlappingObject = null; } } }