diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/player/follow_camera.gd | 16 | 
1 files changed, 6 insertions, 10 deletions
| diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd index 6bd1b9ef..70dd2a96 100644 --- a/client/player/follow_camera.gd +++ b/client/player/follow_camera.gd @@ -27,8 +27,8 @@ const ANGLE_UP_MIN: float = 0.5  const ANGLE_UP_MAX: float = 1.2  const LOOK_WEIGHT: float = 8.0  const MOVE_WEIGHT: float = 2.0 -const ZOOM_SPEED: float = 10.0 -const ZOOM_SPEED_DISCRETE: float = 1.0 +const ZOOM_SPEED: float = 1.0 +const DISCRETE_DURATION: float = 0.3  const ZOOM_WEIGHT: float = 10.0  const MAX_ZOOM: float = 20.0  const MIN_ZOOM: float = 2.0 @@ -90,14 +90,10 @@ func follow(delta):  	# add 0.5, this is the head height  	ground = G.interpolate(ground, target.position + Vector3(0., 0.5, 0.), delta * MOVE_WEIGHT) -	camera_distance_target += Input.get_axis("zoom_in", "zoom_out") * ZOOM_SPEED * delta -	 -	# (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM) simulates the exponential zooming for the mouse -	if Input.is_action_just_pressed("zoom_in_discrete"): -		camera_distance_target -= ZOOM_SPEED_DISCRETE * (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM) -	elif Input.is_action_just_pressed("zoom_out_discrete"): -		camera_distance_target += ZOOM_SPEED_DISCRETE * (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM) -	 +	var zoom_dist = Input.get_axis("zoom_in", "zoom_out") * delta +	zoom_dist += float(Input.is_action_just_pressed("zoom_out_discrete")) * DISCRETE_DURATION +	zoom_dist -= float(Input.is_action_just_pressed("zoom_in_discrete")) * DISCRETE_DURATION +	camera_distance_target *= exp(zoom_dist * ZOOM_SPEED)  	camera_distance_target = clamp(camera_distance_target, MIN_ZOOM, MAX_ZOOM)  	camera_distance = G.interpolate(camera_distance, camera_distance_target, delta * ZOOM_WEIGHT) | 
