From aeacd9d059d261e9d880b481c90e11a94e61d0de Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Tue, 18 Apr 2023 22:35:25 +0200 Subject: [PATCH] feat: Major Camera Fix & look up and down --- blobby1.ico | Bin 100487 -> 4286 bytes blobby1.png | Bin 0 -> 272 bytes icon.png.import => blobby1.png.import | 12 +-- icon.png | Bin 3446 -> 0 bytes project.godot | 10 ++- src/Actors/Blobby/Blobby.tscn | 1 - src/Actors/BlobbyCam.gd | 95 +++++++++++++--------- src/Actors/BlobbyCam.tscn | 61 +++++++++++--- src/Actors/Enemies/Beings/Flyer.tscn | 3 +- src/Actors/Enemies/Beings/WhatAreFrog.gd | 3 +- src/Levels/Level 1.tscn | 4 +- src/Levels/Level 2.tscn | 6 +- src/UserInterface/Screens/MainScreen.tscn | 2 +- 13 files changed, 132 insertions(+), 65 deletions(-) create mode 100644 blobby1.png rename icon.png.import => blobby1.png.import (63%) delete mode 100644 icon.png diff --git a/blobby1.ico b/blobby1.ico index a099ee11f8ed0f3c510c068b0c9ab6d4fdaf5312..d0207b2276bd8a4d8100fdc5ce1618a7bb0271ee 100644 GIT binary patch delta 32 jcmZpl$hJ>Wgn@w(2o)4Sv;xBl0R{#!hV7-rjH?6ySY-vB literal 100487 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 diff --git a/blobby1.png b/blobby1.png new file mode 100644 index 0000000000000000000000000000000000000000..29f7d7361cca1d816ba045080810266655187109 GIT binary patch literal 272 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 Y0Sb~ou*ArFkN^Mx07*qoM6N<$f_ntYg8%>k diff --git a/project.godot b/project.godot index e654080..9e7513e 100644 --- a/project.godot +++ b/project.godot @@ -171,6 +171,14 @@ interact={ , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777221,"unicode":0,"echo":false,"script":null) ] } +up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":87,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) + ] +} [layer_names] @@ -187,7 +195,7 @@ interact={ [physics] common/physics_fps=120 -2d/thread_model=2 +2d/thread_model=0 2d/cell_size=100 common/enable_object_picking=false diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index 12a259c..df02e98 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -4764,6 +4764,5 @@ one_shot = true [connection signal="body_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_body_entered"] [connection signal="got_grounded" from="BlobbyStateMachine" to="." method="_on_Blobby_got_grounded"] [connection signal="timeout" from="BlobbyStateMachine/JumpBufferTimer" to="BlobbyStateMachine" method="_on_JumpBufferTimer_timeout"] -[connection signal="timeout" from="BlobbyStateMachine/CoyoteTimer" to="BlobbyStateMachine" method="_on_CoyoteTimer_timeout"] [connection signal="timeout" from="InvincibilityTimer" to="." method="_on_InvincibilityTimer_timeout"] [connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"] diff --git a/src/Actors/BlobbyCam.gd b/src/Actors/BlobbyCam.gd index 66cdf00..f2d5e5e 100644 --- a/src/Actors/BlobbyCam.gd +++ b/src/Actors/BlobbyCam.gd @@ -22,22 +22,28 @@ onready var signalManager := $"%SignalManager" onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft") onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight") onready var shiftCenter = $CameraAnimationPlayer.get_animation("shiftingCenter") -onready var anim_player = $CameraAnimationPlayer -onready var original_x_zoom = zoom.x -onready var original_y_zoom = zoom.y -onready var blobby = get_node("%Blobby") -onready var screen_rect = Vector2(ProjectSettings.get_setting("display/window/size/width") * zoom.x, ProjectSettings.get_setting("display/window/size/height") * zoom.y ) +onready var anim_player := $CameraAnimationPlayer +onready var horizontal_tween := $HorizontalShiftTween +onready var original_x_zoom := zoom.x +onready var original_y_zoom := zoom.y +onready var blobby := get_node("%Blobby") var image = Image.new() var texture = ImageTexture.new() var prev_pos: Vector2 +var camera_state := "centered" + +var screen_rect = Vector2(ProjectSettings.get_setting("display/window/size/width") * zoom.x, ProjectSettings.get_setting("display/window/size/height") * zoom.y ) +var screen_center = Vector2() +var screen_bottom = Vector2() +var screen_top = Vector2() +var screen_left = Vector2() +var screen_right = Vector2() # Gets the camera limits from the tilemap of the level # Requires "TileMap" to be a sibling of blobby func _ready(): - _set_boundaries() - print(screen_rect) self.position = blobby.global_position image.create(128, 2, false, Image.FORMAT_RGBAH) # TODO Test Performance @@ -49,7 +55,18 @@ func _ready(): func _on_SignalManager_terminal_activated(): get_node("LightAnimationPlayer").play("Pulsing") -func _physics_process(delta: float) -> void: +func _draw(): + draw_line(Vector2((limit_left - position.x), screen_center.y), screen_left, Color(255, 0, 0), 1) + +func _process(delta: float) -> void: + update() + screen_center = (get_camera_screen_center() - position) + screen_bottom = screen_center + Vector2(0, screen_rect.y/2) + screen_top = screen_center - Vector2(0, screen_rect.y/2) + screen_left = screen_center - Vector2(screen_rect.x/2, 0) + screen_right = screen_center + Vector2(screen_rect.x/2, 0) + _adjust_horizontal_offset(delta) + if(anim_player.is_playing()): position = blobby.position prev_pos = position @@ -72,8 +89,10 @@ func _physics_process(delta: float) -> void: slow_time += delta left_move_time = max(0, left_move_time - delta) right_move_time = max(0, right_move_time - delta) - + _adapt_to_movement(player_vel) + if camera_state == "centered": + _adapt_to_input(player_vel) position = blobby.position prev_pos = position _update_lighting_shader() @@ -114,36 +133,25 @@ func _adapt_to_movement(velocity: Vector2) -> void: if(left_move_time >= offset_adapt_seconds && !anim_player.is_playing()): left_move_time = 0 target_offset.x = -camera_horizontal_shift - if(offset == target_offset || - left_edge_pos + target_offset.x - 24 < limit_left || - right_edge_pos + target_offset.x + 24 > limit_right ): + if(offset == target_offset): return 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 - 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) + camera_state = "shiftedLeft" anim_player.play("shiftingLeft") elif(right_move_time >= offset_adapt_seconds && !anim_player.is_playing()): right_move_time = 0 target_offset.x = camera_horizontal_shift - if(offset == target_offset || - left_edge_pos + target_offset.x - 24 < limit_left || - right_edge_pos + target_offset.x + 24 > limit_right ): + if(offset == target_offset): return 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 - 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) + camera_state = "shiftedRight" anim_player.play("shiftingRight") - elif(slow_time >= offset_reset_seconds): + elif(slow_time >= offset_reset_seconds && + !(Input.is_action_pressed("up") || Input.is_action_pressed("duck"))): slow_time = 0 target_offset.x = 0 if(offset == target_offset): @@ -152,21 +160,32 @@ func _adapt_to_movement(velocity: Vector2) -> void: offset_track = shiftCenter.find_track(".:offset") shiftCenter.track_set_key_value(offset_track, 0, offset) shiftCenter.track_set_key_value(offset_track, 1, target_offset) - var limit_left_track = shiftCenter.find_track(".:limit_left") - var limit_right_track = shiftCenter.find_track(".:limit_right") - var limit_top_track = shiftCenter.find_track(".:limit_top") - var limit_bottom_track = shiftCenter.find_track(".:limit_bottom") - shiftCenter.track_set_key_value(limit_left_track, 0, limit_left) - shiftCenter.track_set_key_value(limit_right_track, 0, limit_right) - shiftCenter.track_set_key_value(limit_top_track, 0, limit_top) - shiftCenter.track_set_key_value(limit_bottom_track, 0, limit_bottom) - shiftCenter.track_set_key_value(limit_left_track, 1, original_limit_left) - 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) + camera_state = "centered" anim_player.play("shiftingCenter") return +func _adapt_to_input(velocity: Vector2) -> void: + # TODO Den bug dass man damit durch die map gucken kann wenn man sich weiter bewegt + # lasse ich erstmal drin + if Input.is_action_pressed("duck"): + if(original_limit_bottom - position.y - 2 > screen_bottom.y && offset.y < 48): + offset.y += 1 + elif Input.is_action_pressed("up"): + if(original_limit_top - position.y + 2 < screen_top.y && offset.y > -48): + offset.y -= 1 + +func _adjust_horizontal_offset(delta: float) -> void: + if (limit_left - position.x - screen_left.x > 0.00001): + print(limit_left - position.x - screen_left.x) + if (anim_player.is_playing()): + anim_player.stop(false) + offset.x += (limit_left - position.x - screen_left.x)/3 + if (limit_right - position.x - screen_right.x < 0.00001): + print(limit_right - position.x - screen_right.x) + if (anim_player.is_playing()): + anim_player.stop(false) + offset.x += (limit_right - position.x - screen_right.x)/3 + func reset_limits() -> void: limit_left = original_limit_left limit_right = original_limit_right diff --git a/src/Actors/BlobbyCam.tscn b/src/Actors/BlobbyCam.tscn index ef2ae6a..959d642 100644 --- a/src/Actors/BlobbyCam.tscn +++ b/src/Actors/BlobbyCam.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=52 format=2] +[gd_scene load_steps=53 format=2] [ext_resource path="res://src/Actors/BlobbyCam.gd" type="Script" id=1] [ext_resource path="res://assets/environment/background/Asteroids-Near.png" type="Texture" id=2] @@ -577,7 +577,7 @@ 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/enabled = false tracks/1/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -589,7 +589,7 @@ tracks/2/path = NodePath(".:limit_top") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false -tracks/2/enabled = true +tracks/2/enabled = false tracks/2/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -601,7 +601,7 @@ tracks/3/path = NodePath(".:limit_right") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false -tracks/3/enabled = true +tracks/3/enabled = false tracks/3/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -613,7 +613,7 @@ tracks/4/path = NodePath(".:limit_bottom") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false -tracks/4/enabled = true +tracks/4/enabled = false tracks/4/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -665,7 +665,7 @@ 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/enabled = false tracks/1/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -705,7 +705,47 @@ 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/enabled = false +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:drag_margin_right") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} + +[sub_resource type="Animation" id=16] +resource_name = "shiftingUp" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"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 = false tracks/1/keys = { "times": PoolRealArray( 0, 0.6 ), "transitions": PoolRealArray( 1, 1 ), @@ -830,9 +870,7 @@ current = true zoom = Vector2( 0.75, 0.75 ) drag_margin_h_enabled = true drag_margin_v_enabled = true -drag_margin_left = 0.1 drag_margin_top = 0.0 -drag_margin_right = 0.1 drag_margin_bottom = 0.25 editor_draw_drag_margin = true script = ExtResource( 1 ) @@ -845,6 +883,7 @@ anims/deathCamLateRotation = SubResource( 14 ) anims/shiftingCenter = SubResource( 11 ) anims/shiftingLeft = SubResource( 12 ) anims/shiftingRight = SubResource( 13 ) +anims/shiftingUp = SubResource( 16 ) [node name="LightAnimationPlayer" type="AnimationPlayer" parent="."] root_node = NodePath("../ParallaxBackground/ParallaxLayer4") @@ -939,10 +978,10 @@ texture = ExtResource( 8 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] visible = false frames = SubResource( 7 ) -frame = 7 +frame = 13 playing = true [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] frames = SubResource( 8 ) -frame = 12 +frame = 4 playing = true diff --git a/src/Actors/Enemies/Beings/Flyer.tscn b/src/Actors/Enemies/Beings/Flyer.tscn index fc4aa5c..cd9e70f 100644 --- a/src/Actors/Enemies/Beings/Flyer.tscn +++ b/src/Actors/Enemies/Beings/Flyer.tscn @@ -199,7 +199,8 @@ script = ExtResource( 1 ) vision_distance = 8.0 loose_target_seconds = 5.0 patrolling = true -acceleration = 80 +acceleration = 70 +max_speed = 80 weight = 0.3 [node name="Statemachine" type="Node2D" parent="."] diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.gd b/src/Actors/Enemies/Beings/WhatAreFrog.gd index 86ad5be..1bb1a1c 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.gd +++ b/src/Actors/Enemies/Beings/WhatAreFrog.gd @@ -72,8 +72,9 @@ func _on_StompDetector_body_entered(body: Node) -> void: if !body.is_in_group("player"): return var incoming_vel_vector: Vector2 = body.velocity.normalized() + # TODO This is not the right angle somehow print(rad2deg(abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))))) - if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(50): + if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(60): print("too shallow entry") return signalManager.emit_signal("got_stomped") diff --git a/src/Levels/Level 1.tscn b/src/Levels/Level 1.tscn index 519662b..8bc3f8b 100644 --- a/src/Levels/Level 1.tscn +++ b/src/Levels/Level 1.tscn @@ -36,10 +36,10 @@ unique_name_in_owner = true drag_margin_bottom = 0.3 [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] -frame = 10 +frame = 8 [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] -frame = 10 +frame = 8 [node name="Blobby" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true diff --git a/src/Levels/Level 2.tscn b/src/Levels/Level 2.tscn index 86f5a30..b248e96 100644 --- a/src/Levels/Level 2.tscn +++ b/src/Levels/Level 2.tscn @@ -44,14 +44,14 @@ unique_name_in_owner = true drag_margin_bottom = 0.3 [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] -frame = 11 +frame = 3 [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] -frame = 11 +frame = 3 [node name="Blobby" parent="." instance=ExtResource( 9 )] unique_name_in_owner = true -position = Vector2( 2385, -81 ) +position = Vector2( 0, -3 ) [node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 4 ) diff --git a/src/UserInterface/Screens/MainScreen.tscn b/src/UserInterface/Screens/MainScreen.tscn index 5f026a2..fb1eecd 100644 --- a/src/UserInterface/Screens/MainScreen.tscn +++ b/src/UserInterface/Screens/MainScreen.tscn @@ -60,7 +60,7 @@ size_flags_horizontal = 3 [node name="PlayButton" parent="MenuContainer/Buttons" instance=ExtResource( 3 )] margin_right = 296.0 margin_bottom = 48.0 -next_scene_path = "res://src/Levels/01 Level.tscn" +next_scene_path = "res://src/Levels/Level 1.tscn" [node name="QuitButton" parent="MenuContainer/Buttons" instance=ExtResource( 1 )] anchor_left = 0.0