I have a sphere as my main player object, which is able to roll around, controlled by the w, a, s, and d keys. I’ve built a tunnel which the ball rolls through and my goal is to have the ball roll down the tunnel and at the other end they are actually back where they started. Kind of like a mental trick. Roll down one way, and you end up rolling towards the same end. I don’t want it to be visible either. So far, I’ve been working on trying to rotate the camera around 180 degrees, and reversing the balls velocity in the direction of the tunnel, in my case it is on the z axis. My problem is that the balls rotation isn’t smooth. You can see the ball start rolling the other direction, and my idea is that it shouldn’t look like anything happened. Just reverse the direction of the ball and camera. If there’s another way to accomplish this that would be awesome. Or if I could rotate the ball perhaps keeping the velocity that would be ok but I can’t find a good way to do it.This is the code I’m using to move the ball around but like I said, you can still see rotation slowing down, then going the other way
Vector3 tempV = player.rigidbody.velocity;
tempV.z *= -1;
player.rigidbody.velocity = tempV;
float distance = Mathf.Abs(gameObject.transform.position.x) - Mathf.Abs(player.transform.position.x);
Vector3 newPos = player.transform.position;
newPos.x += distance * 2;
player.transform.position = newPos;
cameraRotator.Rotate(new Vector3(0.0f, 1.0f, 0.0f) * 180);