Camera refinements

This commit is contained in:
Jakob Feldmann 2023-01-17 16:33:39 +01:00
parent b7deb8855c
commit 351e6c4916
2 changed files with 17 additions and 8 deletions

View File

@ -12,9 +12,9 @@ var original_limit_top: int
var camera_is_panning: bool = false var camera_is_panning: bool = false
var target_offset: Vector2 = Vector2(0,0) var target_offset: Vector2 = Vector2(0,0)
export var camera_horizontal_shift = 80 export var camera_horizontal_shift = 60
export var offset_reset_seconds := 1 export var offset_reset_seconds := 1
export var offset_adapt_seconds := 0.8 export var offset_adapt_seconds := 0.7
onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft") onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft")
onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight") onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight")
@ -42,14 +42,16 @@ func _ready():
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if(!GlobalState.is_dead): if(!GlobalState.is_dead):
var player_vel = blobby.velocity var player_vel = blobby.velocity
if(abs(player_vel.x) >= blobby.max_velocity["walk"]): # TODO Take average of velocity here
if(abs(player_vel.x) >= blobby.max_velocity["walk"] * 0.3):
move_time += delta move_time += delta
slow_time = 0 slow_time = 0
else: elif(!anim_player.is_playing() && abs(player_vel.x) <= blobby.max_velocity["walk"] * 0.1):
slow_time += delta slow_time += delta
move_time = 0 move_time = 0
_adapt_to_movement(player_vel) _adapt_to_movement(player_vel)
position = blobby.position
#TODO Do this via a event or let it be to track blobbies movement better #TODO Do this via a event or let it be to track blobbies movement better
else: else:
self.position = blobby.global_position self.position = blobby.global_position
@ -89,8 +91,13 @@ func _adapt_to_movement(velocity: Vector2) -> void:
var center = get_camera_screen_center() var center = get_camera_screen_center()
var left_edge_pos = center.x - screen_rect.x/2 + camera_horizontal_shift var left_edge_pos = center.x - screen_rect.x/2 + camera_horizontal_shift
var right_edge_pos = center.x + screen_rect.x/2 - camera_horizontal_shift var right_edge_pos = center.x + screen_rect.x/2 - camera_horizontal_shift
# TODO The camera jams its head to the wall repeatedly
if(move_time >= offset_adapt_seconds && !anim_player.is_playing()): if(move_time >= offset_adapt_seconds && !anim_player.is_playing()):
target_offset.x = camera_horizontal_shift * sign(velocity.x) target_offset.x = camera_horizontal_shift * sign(velocity.x)
if(offset == target_offset ||
left_edge_pos + target_offset.x - 24 < limit_left ||
right_edge_pos + target_offset.x + 24 > limit_right ):
return
if(sign(velocity.x) < 0): if(sign(velocity.x) < 0):
offset_track = shiftLeft.find_track(".:offset") offset_track = shiftLeft.find_track(".:offset")
shiftLeft.track_set_key_value(offset_track, 0, offset) shiftLeft.track_set_key_value(offset_track, 0, offset)
@ -114,8 +121,10 @@ func _adapt_to_movement(velocity: Vector2) -> void:
print("shiftright") print("shiftright")
anim_player.play("shiftingRight") anim_player.play("shiftingRight")
elif(slow_time >= offset_reset_seconds && !anim_player.is_playing()): elif(slow_time >= offset_reset_seconds && !anim_player.is_playing()):
target_offset.x = 0
if(offset == target_offset):
return
if(left_edge_pos > limit_left && limit_right > right_edge_pos): if(left_edge_pos > limit_left && limit_right > right_edge_pos):
target_offset.x = 0
offset_track = shiftCenter.find_track(".:offset") offset_track = shiftCenter.find_track(".:offset")
shiftCenter.track_set_key_value(offset_track, 0, offset) shiftCenter.track_set_key_value(offset_track, 0, offset)
shiftCenter.track_set_key_value(offset_track, 1, target_offset) shiftCenter.track_set_key_value(offset_track, 1, target_offset)
@ -133,8 +142,7 @@ func _adapt_to_movement(velocity: Vector2) -> void:
shiftCenter.track_set_key_value(limit_bottom_track, 1, original_limit_bottom) shiftCenter.track_set_key_value(limit_bottom_track, 1, original_limit_bottom)
print("shiftcenter") print("shiftcenter")
anim_player.play("shiftingCenter") anim_player.play("shiftingCenter")
# reset_limits() return
position = blobby.position
func reset_limits() -> void: func reset_limits() -> void:
limit_left = original_limit_left limit_left = original_limit_left

View File

@ -631,9 +631,10 @@ texture = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
visible = false visible = false
frames = SubResource( 7 ) frames = SubResource( 7 )
frame = 9 frame = 4
playing = true playing = true
[node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
frames = SubResource( 8 ) frames = SubResource( 8 )
frame = 9
playing = true playing = true