From b7deb8855c2431dc74b1e8af4477288456f07d40 Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Mon, 16 Jan 2023 22:15:07 +0100 Subject: [PATCH] Camera refinement --- src/Actors/BlobbyCam.gd | 44 ++++++++++++++++++------------- src/Actors/BlobbyCam.tscn | 55 +++++++++++++++++++++++++++------------ 2 files changed, 64 insertions(+), 35 deletions(-) diff --git a/src/Actors/BlobbyCam.gd b/src/Actors/BlobbyCam.gd index 29f4895..93c8300 100644 --- a/src/Actors/BlobbyCam.gd +++ b/src/Actors/BlobbyCam.gd @@ -16,7 +16,6 @@ export var camera_horizontal_shift = 80 export var offset_reset_seconds := 1 export var offset_adapt_seconds := 0.8 -onready var tween = $OffsetTween onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft") onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight") onready var shiftCenter = $CameraAnimationPlayer.get_animation("shiftingCenter") @@ -42,7 +41,6 @@ func _ready(): func _physics_process(delta: float) -> void: if(!GlobalState.is_dead): - #print(get_camera_screen_center().x - blobby.global_position.x) var player_vel = blobby.velocity if(abs(player_vel.x) >= blobby.max_velocity["walk"]): move_time += delta @@ -85,36 +83,38 @@ func _set_boundaries(): zoom.y = v_pixels / screen_size.end.y zoom.x = zoom.y -# TODO Smoothing the camera limits in godot ruins this still? +# Smoothing the camera limits in godot ruins something func _adapt_to_movement(velocity: Vector2) -> void: var offset_track + var center = get_camera_screen_center() + 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 if(move_time >= offset_adapt_seconds && !anim_player.is_playing()): target_offset.x = camera_horizontal_shift * sign(velocity.x) if(sign(velocity.x) < 0): offset_track = shiftLeft.find_track(".:offset") shiftLeft.track_set_key_value(offset_track, 0, offset) shiftLeft.track_set_key_value(offset_track, 1, target_offset) - limit_left = original_limit_left + camera_horizontal_shift + # limit_left = original_limit_left + camera_horizontal_shift + var limit_left_track = shiftLeft.find_track(".:limit_left") + var new_limit_left = original_limit_left + camera_horizontal_shift + shiftLeft.track_set_key_value(limit_left_track, 0, limit_left) + shiftLeft.track_set_key_value(limit_left_track, 1, new_limit_left) + print("shiftleft") anim_player.play("shiftingLeft") else: offset_track = shiftRight.find_track(".:offset") shiftRight.track_set_key_value(offset_track, 0, offset) shiftRight.track_set_key_value(offset_track, 1, target_offset) - limit_right = original_limit_right - camera_horizontal_shift + # limit_right = original_limit_right - camera_horizontal_shift + var limit_right_track = shiftRight.find_track(".:limit_right") + var new_limit_right = original_limit_right - camera_horizontal_shift + shiftRight.track_set_key_value(limit_right_track, 0, limit_right) + shiftRight.track_set_key_value(limit_right_track, 1, new_limit_right) + print("shiftright") anim_player.play("shiftingRight") - if(slow_time >= offset_reset_seconds): - var center = get_camera_screen_center() - 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 - print("left_edge") - print(left_edge_pos) - print("limit_left") - print(limit_left) - print("right_edge") - print(right_edge_pos) - print("limit_right") - print(limit_right) - if(left_edge_pos > limit_left && limit_right > right_edge_pos && !anim_player.is_playing()): + elif(slow_time >= offset_reset_seconds && !anim_player.is_playing()): + if(left_edge_pos > limit_left && limit_right > right_edge_pos): target_offset.x = 0 offset_track = shiftCenter.find_track(".:offset") shiftCenter.track_set_key_value(offset_track, 0, offset) @@ -131,9 +131,17 @@ func _adapt_to_movement(velocity: Vector2) -> void: shiftCenter.track_set_key_value(limit_right_track, 1,original_limit_right) shiftCenter.track_set_key_value(limit_top_track, 1, original_limit_top) shiftCenter.track_set_key_value(limit_bottom_track, 1, original_limit_bottom) + print("shiftcenter") anim_player.play("shiftingCenter") + # reset_limits() position = blobby.position +func reset_limits() -> void: + limit_left = original_limit_left + limit_right = original_limit_right + limit_bottom = original_limit_bottom + limit_top = original_limit_top + func _death_cam(): $CameraAnimationPlayer.play("deathCam") diff --git a/src/Actors/BlobbyCam.tscn b/src/Actors/BlobbyCam.tscn index 16aceda..804967e 100644 --- a/src/Actors/BlobbyCam.tscn +++ b/src/Actors/BlobbyCam.tscn @@ -305,7 +305,7 @@ tracks/9/keys = { [sub_resource type="Animation" id=11] resource_name = "shiftingCenter" -length = 0.6 +length = 0.8 tracks/0/type = "value" tracks/0/path = NodePath(".:offset") tracks/0/interp = 1 @@ -313,7 +313,7 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.6 ), +"times": PoolRealArray( 0, 0.8 ), "transitions": PoolRealArray( 1, 1.6 ), "update": 0, "values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] @@ -325,8 +325,8 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1.6 ), "update": 0, "values": [ -10000000, -10000000 ] } @@ -337,8 +337,8 @@ tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1.6 ), "update": 0, "values": [ -10000000, -10000000 ] } @@ -349,8 +349,8 @@ tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1.6 ), "update": 0, "values": [ 10000000, 10000000 ] } @@ -361,8 +361,8 @@ tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 0.6 ), "update": 0, "values": [ 10000000, 10000000 ] } @@ -378,10 +378,22 @@ tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1.6 ), +"transitions": PoolRealArray( 1, 0.6 ), "update": 0, "values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 0.6 ), +"update": 0, +"values": [ -10000000, -10000000 ] +} [sub_resource type="Animation" id=13] resource_name = "shiftingRight" @@ -394,10 +406,22 @@ tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1.6 ), +"transitions": PoolRealArray( 1, 0.6 ), "update": 0, "values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] } +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_right") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 0.6 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} [sub_resource type="Animation" id=9] resource_name = "Pulsing" @@ -502,7 +526,7 @@ z_index = 3 rotating = true current = true zoom = Vector2( 0.75, 0.75 ) -process_mode = 0 +limit_smoothed = true drag_margin_h_enabled = true drag_margin_v_enabled = true drag_margin_left = 0.05 @@ -511,8 +535,6 @@ drag_margin_right = 0.05 editor_draw_drag_margin = true script = ExtResource( 1 ) -[node name="OffsetTween" type="Tween" parent="."] - [node name="CameraAnimationPlayer" type="AnimationPlayer" parent="."] anims/RESET = SubResource( 5 ) anims/deathCam = SubResource( 6 ) @@ -609,10 +631,9 @@ texture = ExtResource( 8 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] visible = false frames = SubResource( 7 ) -frame = 6 +frame = 9 playing = true [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] frames = SubResource( 8 ) -frame = 11 playing = true