I'm building upon roll a ball example and I'm trying to make the camera gain distance from the player, when the player starts moving (gaining velocity). i came up with this, but it feels clunky and the camera jumps. is there a better way to achieve this?
public float MiddleLineForCameraAdjuster = 2.4f;
float velocityCounter, offsetCounter, normalizedVelX, normalizedVelY, normalizedVelZ;
//Camera Adjuster
private void CameraAdjuster()
{
if (rb.velocity.x < 0) normalizedVelX = -rb.velocity.x;
else normalizedVelX = rb.velocity.x;
if (rb.velocity.y < 0) normalizedVelY = -rb.velocity.y;
else normalizedVelY = rb.velocity.y;
if (rb.velocity.z < 0) normalizedVelZ = -rb.velocity.z;
else normalizedVelZ = rb.velocity.z;
if (normalizedVelX + normalizedVelY + normalizedVelZ < 25)
{
velocityCounter = normalizedVelX + normalizedVelY + normalizedVelZ;
}
else if (normalizedVelX + normalizedVelY + normalizedVelZ >= 25)
{
velocityCounter = 25;
}
else velocityCounter = 0;
if (normalizedVelX > 0 || normalizedVelY > 0 || normalizedVelZ > 0)
{
offsetCounter = 2.4f + (velocityCounter / 10);
CameraController.offset.x = (CameraController.offset.x * offsetCounter) / MiddleLineForCameraAdjuster;
CameraController.offset.z = (CameraController.offset.z * offsetCounter) / MiddleLineForCameraAdjuster;
MiddleLineForCameraAdjuster = offsetCounter;
}
}
offset = (transform.position - Player.transform.position);