Improve camera responsiveness by following one frame ahead laterally and 20 frames ahead vertically -- the latter to improve vantage when jumping or taking springboards.
This commit is contained in:
		
							parent
							
								
									ce77112c20
								
							
						
					
					
						commit
						5ef367cac2
					
				| 
						 | 
				
			
			@ -5,6 +5,7 @@ class_name GameplayCamera extends Camera3D
 | 
			
		|||
@export var target_min_distance: float = 2.0
 | 
			
		||||
@export var target_max_distance: float = 10.0
 | 
			
		||||
@export var target_decentering_factor: float = 0.4
 | 
			
		||||
@export var target_leveling_bias: float = 20.0
 | 
			
		||||
@export var follow_lerp_speed: float = 0.999
 | 
			
		||||
@export var turn_lerp_speed: float = 0.999
 | 
			
		||||
@export var fov_lerp_speed: float = 0.999
 | 
			
		||||
| 
						 | 
				
			
			@ -117,8 +118,14 @@ func _follow_target(
 | 
			
		|||
		if target is Character:
 | 
			
		||||
			top_speed = (target as Character).get_top_speed()
 | 
			
		||||
	var decentering: float = target_distance*target_decentering_factor
 | 
			
		||||
	var leveling := (
 | 
			
		||||
		target_leveling_bias*velocity.project(target.global_basis.y)
 | 
			
		||||
	)*delta
 | 
			
		||||
	var target_position := (
 | 
			
		||||
		target.global_position + decentering*target.global_basis.y
 | 
			
		||||
		target.global_position +
 | 
			
		||||
		decentering*target.global_basis.y +
 | 
			
		||||
		velocity*delta +
 | 
			
		||||
		leveling
 | 
			
		||||
	)
 | 
			
		||||
	var target_offset := target_position - global_position
 | 
			
		||||
	if !snap:
 | 
			
		||||
| 
						 | 
				
			
			@ -130,7 +137,7 @@ func _follow_target(
 | 
			
		|||
	))
 | 
			
		||||
	if abs(_gimbal_check()) <= lerp(gimbal_margin, 1.0, 0.5):
 | 
			
		||||
		var desired_basis := Basis.looking_at(
 | 
			
		||||
			target_offset,
 | 
			
		||||
			target_offset - leveling,
 | 
			
		||||
			target.global_basis.y
 | 
			
		||||
		)
 | 
			
		||||
		global_basis = desired_basis if snap else global_basis.slerp(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue