Frog reverses direction correctly when jumping

This commit is contained in:
Jakob Feldmann 2023-01-07 01:39:12 +01:00
parent 3689e9a43b
commit db04c9d3d5
10 changed files with 83 additions and 36 deletions

View File

@ -511,10 +511,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 = 8 frame = 10
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 = 13 frame = 1
playing = true playing = true

View File

@ -16,7 +16,7 @@ func _on_LevelTemplate_ready() -> void:
rope.rope_start = get_node("WhatAreFrog") rope.rope_start = get_node("WhatAreFrog")
rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint")
rope.rope_start_joint = get_node("WhatAreFrog/cshape/pjoint") rope.rope_start_joint = get_node("WhatAreFrog/cshape/pjoint")
rope.spawn_rope($WhatAreFrog.global_position, $RopeAnchor.global_position, false) rope.spawn_rope($WhatAreFrog.global_position, $RopeAnchor.global_position, movement_radius, false)
$WhatAreFrog.bind_to_anchor($RopeAnchor, movement_radius) $WhatAreFrog.bind_to_anchor($RopeAnchor, movement_radius)
@ -37,7 +37,7 @@ func _on_WhatAreFrog_child_exiting_tree(node:Node) -> void:
rope.rope_start = anchor rope.rope_start = anchor
rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint")
rope.rope_start_joint = anchor.get_node("cshape/pjoint") rope.rope_start_joint = anchor.get_node("cshape/pjoint")
rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, false) rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, movement_radius * 10, false)
is_first_signal = false is_first_signal = false
# rope.rope_start = anchor # rope.rope_start = anchor
# anchor.global_position = rope.rope_start_joint.global_position # anchor.global_position = rope.rope_start_joint.global_position

View File

@ -6,11 +6,12 @@
[node name="BoundFrog" type="Node2D"] [node name="BoundFrog" type="Node2D"]
script = ExtResource( 3 ) script = ExtResource( 3 )
movement_radius = 100
[node name="WhatAreFrog" parent="." instance=ExtResource( 1 )] [node name="WhatAreFrog" parent="." instance=ExtResource( 1 )]
[node name="RopeAnchor" parent="." instance=ExtResource( 2 )] [node name="RopeAnchor" parent="." instance=ExtResource( 2 )]
position = Vector2( -136, 11 ) position = Vector2( -80, 9 )
[connection signal="child_exiting_tree" from="WhatAreFrog" to="." method="_on_WhatAreFrog_child_exiting_tree"] [connection signal="child_exiting_tree" from="WhatAreFrog" to="." method="_on_WhatAreFrog_child_exiting_tree"]

View File

@ -10,9 +10,14 @@ var movement_radius: float
var anchor: Node2D var anchor: Node2D
var is_bound := false var is_bound := false
var start_x := 0 var start_x := 0.0
var in_air := false var in_air := false
var is_hurt := false var is_hurt := false
var stored_x_vel = 0.0
var current_delta = 0.0
var reversing_possible_searching := true
func _ready(): func _ready():
jump_timer = Timer.new() jump_timer = Timer.new()
@ -20,13 +25,13 @@ func _ready():
jump_timer.connect("timeout", self, "jump") jump_timer.connect("timeout", self, "jump")
add_child(jump_timer) add_child(jump_timer)
func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void: func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void:
anchor = anchor_node anchor = anchor_node
movement_radius = radius movement_radius = radius
is_bound = true is_bound = true
# TODO adapt to groups
# TODO Engine error here(what does it WANT???)
func _on_StompDetector_body_entered(body: Node) -> void: func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y: if body.global_position.y > get_node("StompDetector").global_position.y:
return return
@ -36,26 +41,22 @@ func _on_StompDetector_body_entered(body: Node) -> void:
func execute_movement(delta: float) -> void: func execute_movement(delta: float) -> void:
current_delta = delta
velocity.y += _gravity * delta velocity.y += _gravity * delta
if sign(velocity.x) != orientation.cast_to.x:
velocity.x *= -1
if(is_bound): if(is_bound):
var next_position = global_position + velocity*delta var next_position = global_position + velocity * current_delta
var distance_to_anchor = global_position.distance_to(anchor.global_position) var current_distance = global_position.distance_to(anchor.global_position)
var new_distance = next_position.distance_to(anchor.global_position) var new_distance = next_position.distance_to(anchor.global_position)
if(new_distance > movement_radius): if(current_distance >= movement_radius && new_distance > current_distance):
velocity = velocity/2 velocity.x = velocity.x * 0.8
orientation.cast_to.x *= -1
velocity = move_and_slide(velocity, FLOOR_NORMAL, false, 4, 0.785398,false) velocity = move_and_slide(velocity, FLOOR_NORMAL, false, 4, 0.785398,false)
if(is_on_floor()): if(is_on_floor()):
velocity = Vector2(0,0) velocity = Vector2(0,0)
if ($Left_Wallcast.is_colliding() || $Right_Wallcast.is_colliding()) && is_on_floor(): # Reverse direction when hitting limit
orientation.cast_to.x *= -1
func die() -> void: func die() -> void:
GlobalState.score += score GlobalState.score += score
queue_free() queue_free()
@ -75,8 +76,10 @@ func searching() -> Vector2:
else: else:
if(!in_air): if(!in_air):
start_x = global_position.x start_x = global_position.x
reversing_possible_searching = true
jump_timer.stop() jump_timer.stop()
in_air = true in_air = true
return velocity return velocity
@ -89,10 +92,43 @@ func jump():
var v: Vector2 = velocity_for_jump_distance() var v: Vector2 = velocity_for_jump_distance()
var jump_height = (pow(v.length(), 2) * pow(sin(deg2rad(65)),2))/(2*_gravity) var jump_height = (pow(v.length(), 2) * pow(sin(deg2rad(65)),2))/(2*_gravity)
print("Jump height: ", jump_height) print("Jump height: ", jump_height)
$CeilingRayCast.cast_to = Vector2(1.5*24 * sign(orientation.cast_to.x), - jump_height) $CeilingRayCast.cast_to = Vector2(1.5*24 * get_facing_direction(), - jump_height)
velocity = v velocity = v
if(is_bound):
var next_position = global_position + velocity * get_facing_direction() * current_delta
var current_distance = global_position.distance_to(anchor.global_position)
var new_distance = next_position.distance_to(anchor.global_position)
print(current_distance)
print(new_distance)
if(new_distance >= movement_radius && new_distance > current_distance):
if can_reverse_facing_direction():
reverse_facing_direction()
elif (($Left_Wallcast.is_colliding() || $Right_Wallcast.is_colliding()) && can_reverse_facing_direction()):
reverse_facing_direction()
elif (($Left_Wallcast.is_colliding() || $Right_Wallcast.is_colliding()) && can_reverse_facing_direction()):
reverse_facing_direction()
if sign(velocity.x) != get_facing_direction():
velocity.x *= -1
func velocity_for_jump_distance(distance: float = 3*24, angle: float = deg2rad(65)) -> Vector2: func velocity_for_jump_distance(distance: float = 3*24, angle: float = deg2rad(65)) -> Vector2:
var abs_velocity = sqrt((distance * _gravity)/sin(2*angle)) var abs_velocity = sqrt((distance * _gravity)/sin(2*angle))
return Vector2(abs_velocity,0).rotated(-1*angle) return Vector2(abs_velocity,0).rotated(-1*angle)
func can_reverse_facing_direction() -> bool:
if(is_on_floor()):
return true
return false
func reverse_facing_direction() -> void:
print("reversing direction")
orientation.cast_to.x *= -1
pass
func get_facing_direction() -> float:
return orientation.cast_to.x

View File

@ -6,6 +6,8 @@ var piece_length := 2.0
var rope_close_tolerance := 2.0 var rope_close_tolerance := 2.0
var rope_pieces := [] var rope_pieces := []
var rope_piece_positions : PoolVector2Array= [] var rope_piece_positions : PoolVector2Array= []
var anchor_distance := 1.0
var movement_radius := 1.0
export var mouse_follow := false export var mouse_follow := false
@ -20,10 +22,11 @@ func _physics_process(_delta: float) -> void:
rope_end.global_position = get_global_mouse_position() rope_end.global_position = get_global_mouse_position()
rope_piece_positions.resize(0) rope_piece_positions.resize(0)
rope_piece_positions = get_piece_positions() rope_piece_positions = get_piece_positions()
anchor_distance = rope_piece_positions[0].distance_to(rope_piece_positions[-1])
if !rope_piece_positions.empty(): if !rope_piece_positions.empty():
update() update()
func spawn_rope(start_pos: Vector2, end_pos: Vector2, new_anchors: bool = true): func spawn_rope(start_pos: Vector2, end_pos: Vector2, m_radius: float = 10000, new_anchors: bool = true):
if(new_anchors): if(new_anchors):
rope_start = RopeAnchor.instance() rope_start = RopeAnchor.instance()
rope_end = RopeAnchor.instance() rope_end = RopeAnchor.instance()
@ -33,8 +36,9 @@ func spawn_rope(start_pos: Vector2, end_pos: Vector2, new_anchors: bool = true):
add_child(rope_end, true) add_child(rope_end, true)
rope_start.global_position = start_pos rope_start.global_position = start_pos
rope_end.global_position = end_pos rope_end.global_position = end_pos
var dist = start_pos.distance_to(end_pos) movement_radius = m_radius
var pieces_amount = round(dist / piece_length) anchor_distance = start_pos.distance_to(end_pos)
var pieces_amount = round(anchor_distance / piece_length)
var spawn_angle = (end_pos-start_pos).angle() - PI/2 var spawn_angle = (end_pos-start_pos).angle() - PI/2
create_rope(pieces_amount, rope_start, end_pos, spawn_angle) create_rope(pieces_amount, rope_start, end_pos, spawn_angle)
@ -76,4 +80,8 @@ func get_piece_positions() -> Array:
return rope_points return rope_points
func _draw() -> void: func _draw() -> void:
draw_polyline(rope_piece_positions, Color.blue, 1.2) draw_polyline(
rope_piece_positions,
Color(Color.green.linear_interpolate(Color.red, anchor_distance/max(1.0, movement_radius))),
1.2
)

View File

@ -11,7 +11,8 @@ collision_layer = 256
collision_mask = 8 collision_mask = 8
input_pickable = true input_pickable = true
mode = 1 mode = 1
mass = 0.01 mass = 5.72
gravity_scale = 3.0
linear_damp = 1.0 linear_damp = 1.0
angular_damp = 1.0 angular_damp = 1.0

View File

@ -9,6 +9,7 @@ height = 1.0
[node name="RigidBody2D" type="RigidBody2D"] [node name="RigidBody2D" type="RigidBody2D"]
collision_layer = 256 collision_layer = 256
collision_mask = 8 collision_mask = 8
gravity_scale = 3.0
linear_damp = 1.0 linear_damp = 1.0
angular_damp = 1.0 angular_damp = 1.0
script = ExtResource( 1 ) script = ExtResource( 1 )

View File

@ -27,6 +27,9 @@ wait_time = 20.0
[node name="BlobbyCam" parent="." instance=ExtResource( 12 )] [node name="BlobbyCam" parent="." instance=ExtResource( 12 )]
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 1
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 11 frame = 11
[node name="Blobby" parent="." instance=ExtResource( 2 )] [node name="Blobby" parent="." instance=ExtResource( 2 )]

View File

@ -62,9 +62,6 @@ position = Vector2( 492, 804 )
[node name="DartingEnemy" parent="." instance=ExtResource( 8 )] [node name="DartingEnemy" parent="." instance=ExtResource( 8 )]
position = Vector2( 800, 875 ) position = Vector2( 800, 875 )
[node name="Spikes" parent="." instance=ExtResource( 4 )]
position = Vector2( -180, 900 )
[node name="Spikes3" parent="." instance=ExtResource( 4 )] [node name="Spikes3" parent="." instance=ExtResource( 4 )]
position = Vector2( 108, 900 ) position = Vector2( 108, 900 )
@ -77,9 +74,6 @@ position = Vector2( 132, 900 )
[node name="Spikes6" parent="." instance=ExtResource( 4 )] [node name="Spikes6" parent="." instance=ExtResource( 4 )]
position = Vector2( 348, 900 ) position = Vector2( 348, 900 )
[node name="Spikes2" parent="." instance=ExtResource( 4 )]
position = Vector2( -156, 900 )
[node name="TileMap" type="TileMap" parent="."] [node name="TileMap" type="TileMap" parent="."]
tile_set = SubResource( 2 ) tile_set = SubResource( 2 )
cell_size = Vector2( 24, 24 ) cell_size = Vector2( 24, 24 )
@ -90,4 +84,4 @@ collision_friction = 0.0
collision_layer = 8 collision_layer = 8
collision_mask = 0 collision_mask = 0
format = 1 format = 1
tile_data = PoolIntArray( 1179634, 1, 0, 1245170, 1, 0, 1310706, 1, 0, 1376242, 1, 0, 1441778, 1, 0, 1507314, 1, 0, 1572850, 1, 0, 1638386, 1, 0, 1703922, 1, 0, 1769458, 1, 0, 1834994, 1, 0, 1900530, 1, 0, 1966066, 1, 0, 1966069, 536870912, 0, 1966071, 1, 0, 1900544, 0, 0, 2031602, 1, 0, 2031603, 1, 0, 2031604, 1, 0, 2031605, 1, 0, 2031606, 1, 0, 2031607, 1, 0, 1966080, 0, 0, 2097138, 1, 0, 2097139, 1, 0, 2097140, 1, 0, 2097141, 1, 0, 2097142, 1, 0, 2097143, 1, 0, 2162674, 1, 0, 2162679, 1, 0, 2228210, 1, 0, 2228215, 1, 0, 2228220, 1, 0, 2228221, 1, 0, 2228222, 1, 0, 2228223, 1, 0, 2162688, 1, 0, 2162726, 1, 0, 2293746, 1, 0, 2293751, 1, 0, 2228230, 1, 0, 2228231, 1, 0, 2228232, 1, 0, 2228233, 1, 0, 2228234, 1, 0, 2228235, 1, 0, 2228242, 1, 0, 2228243, 1, 0, 2228244, 1, 0, 2228245, 1, 0, 2228246, 1, 0, 2228262, 1, 0, 2359282, 1, 0, 2359287, 1, 0, 2293798, 1, 0, 2424818, 1, 0, 2424823, 1, 0, 2424827, 1, 0, 2359323, 1, 0, 2359334, 1, 0, 2490354, 1, 0, 2490355, 1, 0, 2490356, 1, 0, 2490357, 1, 0, 2490358, 1, 0, 2490359, 1, 0, 2490362, 1, 0, 2490363, 1, 0, 2490364, 1, 0, 2490365, 1, 0, 2490366, 1, 0, 2490367, 1, 0, 2424832, 1, 0, 2424833, 1, 0, 2424834, 1, 0, 2424835, 1, 0, 2424838, 1, 0, 2424839, 1, 0, 2424840, 1, 0, 2424841, 1, 0, 2424842, 1, 0, 2424843, 1, 0, 2424844, 1, 0, 2424845, 1, 0, 2424848, 1, 0, 2424849, 1, 0, 2424850, 1, 0, 2424851, 1, 0, 2424852, 1, 0, 2424853, 1, 0, 2424854, 1, 0, 2424855, 1, 0, 2424856, 1, 0, 2424857, 1, 0, 2424858, 1, 0, 2424859, 1, 0, 2424860, 1, 0, 2424861, 1, 0, 2424862, 1, 0, 2424863, 1, 0, 2424864, 1, 0, 2424865, 1, 0, 2424866, 1, 0, 2424867, 1, 0, 2424868, 1, 0, 2424869, 1, 0, 2424870, 1, 0, 2555895, 1, 0, 2555896, 1, 0, 2555897, 1, 0, 2555898, 1, 0, 2555899, 1, 0, 2555900, 1, 0, 2555901, 1, 0, 2555902, 1, 0, 2555903, 1, 0, 2490368, 1, 0, 2490369, 1, 0, 2490370, 1, 0, 2490371, 1, 0, 2490372, 1, 0, 2490373, 1, 0, 2490374, 1, 0, 2490375, 1, 0, 2490376, 1, 0, 2490377, 1, 0, 2490378, 1, 0, 2490379, 1, 0, 2490380, 1, 0, 2490381, 1, 0, 2490382, 1, 0, 2490383, 1, 0 ) tile_data = PoolIntArray( 1179634, 1, 0, 1245170, 1, 0, 1310706, 1, 0, 1376242, 1, 0, 1441778, 1, 0, 1507314, 1, 0, 1572850, 1, 0, 1638386, 1, 0, 1703922, 1, 0, 1769458, 1, 0, 1834994, 1, 0, 1900530, 1, 0, 1966066, 1, 0, 1966069, 536870912, 0, 1966071, 1, 0, 1900544, 0, 0, 2031602, 1, 0, 2031603, 1, 0, 2031604, 1, 0, 2031605, 1, 0, 2031606, 1, 0, 2031607, 1, 0, 1966080, 0, 0, 2097138, 1, 0, 2097139, 1, 0, 2097140, 1, 0, 2097141, 1, 0, 2097142, 1, 0, 2097143, 1, 0, 2162674, 1, 0, 2162679, 1, 0, 2228210, 1, 0, 2228215, 1, 0, 2228220, 1, 0, 2228221, 1, 0, 2228222, 1, 0, 2228223, 1, 0, 2162688, 1, 0, 2162726, 1, 0, 2293746, 1, 0, 2293751, 1, 0, 2228230, 1, 0, 2228231, 1, 0, 2228232, 1, 0, 2228233, 1, 0, 2228234, 1, 0, 2228235, 1, 0, 2228242, 1, 0, 2228243, 1, 0, 2228244, 1, 0, 2228245, 1, 0, 2228246, 1, 0, 2228262, 1, 0, 2359282, 1, 0, 2359287, 1, 0, 2293798, 1, 0, 2424818, 1, 0, 2424823, 1, 0, 2424827, 1, 0, 2359323, 1, 0, 2359334, 1, 0, 2490354, 1, 0, 2490355, 1, 0, 2490356, 1, 0, 2490357, 1, 0, 2490358, 1, 0, 2490359, 1, 0, 2490360, -1073741823, 0, 2490361, -1073741823, 0, 2490362, 1, 0, 2490363, 1, 0, 2490364, 1, 0, 2490365, 1, 0, 2490366, 1, 0, 2490367, 1, 0, 2424832, 1, 0, 2424833, 1, 0, 2424834, 1, 0, 2424835, 1, 0, 2424838, 1, 0, 2424839, 1, 0, 2424840, 1, 0, 2424841, 1, 0, 2424842, 1, 0, 2424843, 1, 0, 2424844, 1, 0, 2424845, 1, 0, 2424848, 1, 0, 2424849, 1, 0, 2424850, 1, 0, 2424851, 1, 0, 2424852, 1, 0, 2424853, 1, 0, 2424854, 1, 0, 2424855, 1, 0, 2424856, 1, 0, 2424857, 1, 0, 2424858, 1, 0, 2424859, 1, 0, 2424860, 1, 0, 2424861, 1, 0, 2424862, 1, 0, 2424863, 1, 0, 2424864, 1, 0, 2424865, 1, 0, 2424866, 1, 0, 2424867, 1, 0, 2424868, 1, 0, 2424869, 1, 0, 2424870, 1, 0, 2555895, 1, 0, 2555896, 1, 0, 2555897, 1, 0, 2555898, 1, 0, 2555899, 1, 0, 2555900, 1, 0, 2555901, 1, 0, 2555902, 1, 0, 2555903, 1, 0, 2490368, 1, 0, 2490369, 1, 0, 2490370, 1, 0, 2490371, 1, 0, 2490372, 1, 0, 2490373, 1, 0, 2490374, 1, 0, 2490375, 1, 0, 2490376, 1, 0, 2490377, 1, 0, 2490378, 1, 0, 2490379, 1, 0, 2490380, 1, 0, 2490381, 1, 0, 2490382, 1, 0, 2490383, 1, 0 )

View File

@ -37,7 +37,7 @@ format = 1
tile_data = PoolIntArray( 131099, -1073741822, 0, 262139, -1610612734, 0, 196635, -1073741822, 0, 327675, -1610612734, 0, 262171, -1073741822, 0, 393211, -1610612734, 0, 327707, -1073741822, 0, 458747, -1610612734, 0, 393243, -1073741822, 0, 524283, -1610612734, 0, 458779, -1073741822, 0, 589819, -1610612734, 0, 524315, -1073741822, 0, 655355, -1610612734, 0, 589851, -1073741822, 0, 720891, -1610612734, 0, 655387, -1073741822, 0, 786427, -1610612734, 0, 720923, -1073741822, 0, 851963, -1610612734, 0, 786459, -1073741822, 0, 917499, -1610612734, 0, 851995, -1073741822, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 2, 0, 917514, 2, 0, 917515, 2, 0, 917516, 2, 0, 917517, 2, 0, 917518, 2, 0, 917519, 2, 0, 917520, 2, 0, 917521, 2, 0, 917522, 2, 0, 917523, 2, 0, 917524, 2, 0, 917525, 2, 0, 917526, 2, 0, 917527, 2, 0, 917528, 2, 0, 917529, 2, 0, 917530, 2, 0 ) tile_data = PoolIntArray( 131099, -1073741822, 0, 262139, -1610612734, 0, 196635, -1073741822, 0, 327675, -1610612734, 0, 262171, -1073741822, 0, 393211, -1610612734, 0, 327707, -1073741822, 0, 458747, -1610612734, 0, 393243, -1073741822, 0, 524283, -1610612734, 0, 458779, -1073741822, 0, 589819, -1610612734, 0, 524315, -1073741822, 0, 655355, -1610612734, 0, 589851, -1073741822, 0, 720891, -1610612734, 0, 655387, -1073741822, 0, 786427, -1610612734, 0, 720923, -1073741822, 0, 851963, -1610612734, 0, 786459, -1073741822, 0, 917499, -1610612734, 0, 851995, -1073741822, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 2, 0, 917514, 2, 0, 917515, 2, 0, 917516, 2, 0, 917517, 2, 0, 917518, 2, 0, 917519, 2, 0, 917520, 2, 0, 917521, 2, 0, 917522, 2, 0, 917523, 2, 0, 917524, 2, 0, 917525, 2, 0, 917526, 2, 0, 917527, 2, 0, 917528, 2, 0, 917529, 2, 0, 917530, 2, 0 )
[node name="Spikes" parent="." instance=ExtResource( 13 )] [node name="Spikes" parent="." instance=ExtResource( 13 )]
position = Vector2( -13, 324 ) position = Vector2( 231, 203 )
[node name="BlobbyCam" parent="." instance=ExtResource( 11 )] [node name="BlobbyCam" parent="." instance=ExtResource( 11 )]
@ -50,11 +50,14 @@ scale = Vector2( 0.878906, 0.936025 )
parameters/playback = SubResource( 4 ) parameters/playback = SubResource( 4 )
[node name="BoundFrog" parent="." instance=ExtResource( 12 )] [node name="BoundFrog" parent="." instance=ExtResource( 12 )]
position = Vector2( 263, 323 ) position = Vector2( -15.9999, 324 )
scale = Vector2( 0.878906, 0.936025 ) scale = Vector2( 0.878906, 0.936025 )
[node name="WhatAreFrog" parent="BoundFrog" index="0"]
position = Vector2( 54.6132, 0 )
[node name="RopeAnchor" parent="BoundFrog" index="1"] [node name="RopeAnchor" parent="BoundFrog" index="1"]
position = Vector2( 158.151, 10.6835 ) position = Vector2( 167.253, 9.61514 )
[node name="Collectibles" type="Node2D" parent="."] [node name="Collectibles" type="Node2D" parent="."]
visible = false visible = false