Frog with simple rope

This commit is contained in:
Jakob Feldmann 2023-01-02 23:47:07 +01:00
parent b01b898558
commit 67031e101b
20 changed files with 437 additions and 246 deletions

View File

@ -143,6 +143,11 @@ duck={
, 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":83,"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":83,"unicode":0,"echo":false,"script":null)
] ]
} }
click={
"deadzone": 0.5,
"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
]
}
[layer_names] [layer_names]

View File

@ -102,6 +102,8 @@ func _death_cam():
$CameraAnimationPlayer.play("deathCam") $CameraAnimationPlayer.play("deathCam")
func _update_lighting_shader(): func _update_lighting_shader():
# Props to gameendaevour
# TODO get this into a central world update management system
var lights = get_tree().get_nodes_in_group("light") var lights = get_tree().get_nodes_in_group("light")
image.lock() image.lock()
for i in lights.size(): for i in lights.size():

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=47 format=2] [gd_scene load_steps=47 format=2]
[ext_resource path="res://src/Actors/Blobby/BlobbyCam.gd" type="Script" id=1] [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] [ext_resource path="res://assets/environment/background/Asteroids-Near.png" type="Texture" id=2]
[ext_resource path="res://assets/environment/background/Asteroids-Far.png" type="Texture" id=3] [ext_resource path="res://assets/environment/background/Asteroids-Far.png" type="Texture" id=3]
[ext_resource path="res://assets/environment/background/space.png" type="Texture" id=4] [ext_resource path="res://assets/environment/background/space.png" type="Texture" id=4]
@ -439,6 +439,7 @@ z_index = -1
texture = ExtResource( 4 ) texture = ExtResource( 4 )
[node name="ParallaxLayer2" type="ParallaxLayer" parent="ParallaxBackground"] [node name="ParallaxLayer2" type="ParallaxLayer" parent="ParallaxBackground"]
visible = false
z_index = -1 z_index = -1
motion_scale = Vector2( 0, 0 ) motion_scale = Vector2( 0, 0 )
@ -447,6 +448,7 @@ z_index = -1
texture = ExtResource( 3 ) texture = ExtResource( 3 )
[node name="ParallaxLayer3" type="ParallaxLayer" parent="ParallaxBackground"] [node name="ParallaxLayer3" type="ParallaxLayer" parent="ParallaxBackground"]
visible = false
z_index = -1 z_index = -1
motion_scale = Vector2( 0.001, 0.001 ) motion_scale = Vector2( 0.001, 0.001 )
@ -455,6 +457,7 @@ z_index = -1
texture = ExtResource( 2 ) texture = ExtResource( 2 )
[node name="ParallaxLayer4" type="ParallaxLayer" parent="ParallaxBackground"] [node name="ParallaxLayer4" type="ParallaxLayer" parent="ParallaxBackground"]
visible = false
motion_scale = Vector2( 0.01, 0.01 ) motion_scale = Vector2( 0.01, 0.01 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayer4"] [node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayer4"]
@ -501,14 +504,17 @@ z_index = -1
texture = ExtResource( 8 ) texture = ExtResource( 8 )
[node name="Sprite4" type="Sprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="Sprite4" type="Sprite" parent="ParallaxBackground/ParallaxLayer5"]
visible = false
z_index = -1 z_index = -1
texture = ExtResource( 8 ) texture = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
visible = false
frames = SubResource( 7 ) frames = SubResource( 7 )
frame = 9 frame = 8
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
playing = true playing = true

View File

@ -0,0 +1,13 @@
extends Node2D
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
var start_pos := Vector2.ZERO
var end_pos := Vector2.ZERO
onready var rope: Node2D = null
func _ready() -> void:
rope = Rope.instance()
add_child(rope)
rope.spawn_rope($AnchorPos.global_position, Vector2($AnchorPos.global_position.x + 200, $AnchorPos.global_position.y))
rope.end_attached_node = $WhatAreFrog1

View File

@ -0,0 +1,13 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrog.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/Contraptions/Rope/RopeAnchor.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/Actors/Enemies/Beings/BoundFrog.gd" type="Script" id=3]
[node name="BoundFrog" type="Node2D"]
script = ExtResource( 3 )
[node name="WhatAreFrog" parent="." instance=ExtResource( 1 )]
[node name="RopeAnchor" parent="." instance=ExtResource( 2 )]
position = Vector2( -53, 10 )

View File

@ -29,7 +29,7 @@ func _physics_process(delta: float) -> void:
elif(left_wrc.is_colliding() || (!right_src.is_colliding() && left_src.is_colliding())): elif(left_wrc.is_colliding() || (!right_src.is_colliding() && left_src.is_colliding())):
rotation += delta * 7 * movement rotation += delta * 7 * movement
else: else:
rotation -= -sign(velocity.x) * delta * 7 * movement rotation += sign(velocity.x) * delta * 7 * movement
# velocity # velocity
var v = Vector2(velocity.x * movement, 0) var v = Vector2(velocity.x * movement, 0)

View File

@ -38,25 +38,25 @@ shape = SubResource( 1 )
[node name="SlopeRaycastLeft" type="RayCast2D" parent="."] [node name="SlopeRaycastLeft" type="RayCast2D" parent="."]
position = Vector2( -7.5, 12 ) position = Vector2( -7.5, 12 )
enabled = true enabled = true
cast_to = Vector2( 0, 1 ) cast_to = Vector2( 0, 2 )
collision_mask = 8 collision_mask = 8
[node name="SlopeRaycastRight" type="RayCast2D" parent="."] [node name="SlopeRaycastRight" type="RayCast2D" parent="."]
position = Vector2( 7.5, 12 ) position = Vector2( 7.5, 12 )
enabled = true enabled = true
cast_to = Vector2( 0, 1 ) cast_to = Vector2( 0, 2 )
collision_mask = 8 collision_mask = 8
[node name="WallRaycastLeft" type="RayCast2D" parent="."] [node name="WallRaycastLeft" type="RayCast2D" parent="."]
position = Vector2( -15, 12 ) position = Vector2( -15, 12 )
enabled = true enabled = true
cast_to = Vector2( -2, 0 ) cast_to = Vector2( -3, 0 )
collision_mask = 8 collision_mask = 8
[node name="WallRaycastRight" type="RayCast2D" parent="."] [node name="WallRaycastRight" type="RayCast2D" parent="."]
position = Vector2( 15, 12 ) position = Vector2( 15, 12 )
enabled = true enabled = true
cast_to = Vector2( 2, 0 ) cast_to = Vector2( 3, 0 )
collision_mask = 8 collision_mask = 8
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]] [node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]

View File

@ -1,10 +1,14 @@
extends Player extends Player
const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd")
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
onready var orientation: RayCast2D = $Orientation onready var orientation: RayCast2D = $Orientation
onready var jump_timer: Timer onready var jump_timer: Timer
export var score := 100 export var score := 100
export var chain_length := 100
export var chained := true
var start_x = 0 var start_x = 0
var in_air = false var in_air = false
@ -13,6 +17,9 @@ func _ready():
jump_timer = Timer.new() jump_timer = Timer.new()
jump_timer.connect("timeout", self, "jump") jump_timer.connect("timeout", self, "jump")
add_child(jump_timer) add_child(jump_timer)
if chained:
pass
# TODO adapt to groups # TODO adapt to groups
# TODO Engine error here(what does it WANT???) # TODO Engine error here(what does it WANT???)
@ -21,7 +28,7 @@ func _on_StompDetector_body_entered(body: Node) -> void:
return return
get_node("EnemyBody").disabled = true get_node("EnemyBody").disabled = true
die() die()
func execute_movement(delta: float) -> void: func execute_movement(delta: float) -> void:
velocity.y += _gravity * delta velocity.y += _gravity * delta
if sign(velocity.x) != orientation.cast_to.x: if sign(velocity.x) != orientation.cast_to.x:

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1] [ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1]
[ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrog.gd" type="Script" id=2] [ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrog.gd" type="Script" id=2]
[ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd" type="Script" id=3] [ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd" type="Script" id=3]
[ext_resource path="res://src/Contraptions/Rope/RopeAnchor.tscn" type="PackedScene" id=4]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 2.72463, 1.17848 ) extents = Vector2( 2.72463, 1.17848 )
@ -16,6 +17,7 @@ extents = Vector2( 15.534, 10.0962 )
[node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]] [node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]]
collision_layer = 2 collision_layer = 2
collision_mask = 9 collision_mask = 9
collision/safe_margin = 0.001
script = ExtResource( 2 ) script = ExtResource( 2 )
[node name="Statemachine" type="Node2D" parent="."] [node name="Statemachine" type="Node2D" parent="."]
@ -78,5 +80,7 @@ position = Vector2( 5.96046e-07, 2.5 )
scale = Vector2( 1.03, 1.04 ) scale = Vector2( 1.03, 1.04 )
shape = SubResource( 3 ) shape = SubResource( 3 )
[node name="RopeAnchor" parent="." instance=ExtResource( 4 )]
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"] [connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]
[connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"] [connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"]

View File

@ -11,7 +11,7 @@ onready var lock_on_timer = $LockOnTimer
onready var sight_lost_timer = $SightLostTimer onready var sight_lost_timer = $SightLostTimer
onready var turret_search_animation = $AnimationPlayer.get_animation("Turret Rotation") onready var turret_search_animation = $AnimationPlayer.get_animation("Turret Rotation")
onready var turret_return_animation = $AnimationPlayer.get_animation("Turret Returning") onready var turret_return_animation = $AnimationPlayer.get_animation("Turret Returning")
onready var Bullet = preload("res://src/HarmfulObjects/Bullet.tscn") onready var Bullet = preload("res://src/ObstacleObjects/Bullet.tscn")
# Derives the freedom from the number of bald head eagles # Derives the freedom from the number of bald head eagles
onready var angle_of_freedom = deg2rad( onready var angle_of_freedom = deg2rad(
turret_search_animation.track_get_key_value( turret_search_animation.track_get_key_value(

View File

@ -0,0 +1,87 @@
extends Node2D
var RopePiece = preload("res://src/Contraptions/Rope/RopePiece.tscn")
var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn")
var piece_length := 2.0
var rope_close_tolerance := 2.0
var rope_pieces := []
var rope_piece_positions : PoolVector2Array= []
var end_attached_node: Node2D = null
export var mouse_follow := false
onready var rope_start
onready var rope_end
onready var rope_start_joint
onready var rope_end_joint
func _physics_process(_delta: float) -> void:
#Resize or reinitialize?
if(end_attached_node != null):
if (!is_instance_valid(end_attached_node)):
rope_end.mode = RigidBody2D.MODE_RIGID
else:
rope_end.global_position = end_attached_node.global_position
if(mouse_follow):
rope_end.global_position = get_global_mouse_position()
rope_piece_positions.resize(0)
rope_piece_positions = get_piece_positions()
if !rope_piece_positions.empty():
update()
func spawn_rope(start_pos: Vector2, end_pos: Vector2):
rope_start = RopeAnchor.instance()
rope_end = RopeAnchor.instance()
rope_start_joint = rope_start.get_node("cshape/pjoint")
rope_end_joint = rope_end.get_node("cshape/pjoint")
add_child(rope_start, true)
add_child(rope_end, true)
rope_start.global_position = start_pos
rope_end.global_position = end_pos
start_pos = rope_start_joint.global_position
end_pos = rope_end_joint.global_position
var dist = start_pos.distance_to(end_pos)
var pieces_amount = round(dist / piece_length)
var spawn_angle = (end_pos-start_pos).angle() - PI/2
create_rope(pieces_amount, rope_start, end_pos, spawn_angle)
func create_rope(pieces_amount: int, last_piece: Object, end_pos: Vector2, spawn_angle: float) -> void:
for i in pieces_amount:
last_piece = add_piece(last_piece, i, spawn_angle)
last_piece.set_name("rope_piece_"+str(i))
rope_pieces.append(last_piece)
var joint_pos = last_piece.get_node("cshape/pjoint").global_position
if joint_pos.distance_to(end_pos) < rope_close_tolerance:
break
rope_end_joint.node_a = rope_end.get_path()
rope_end_joint.node_b = rope_pieces[-1].get_path()
func add_piece(prev_link: Object, id: int, spawn_angle:float) -> Object:
var joint: PinJoint2D = prev_link.get_node("cshape/pjoint") as PinJoint2D
var new_piece: Object = RopePiece.instance() as Object
new_piece.global_position = joint.global_position
new_piece.rotation = spawn_angle
new_piece.prev_link = prev_link
new_piece.id = id
add_child(new_piece)
joint.node_a = prev_link.get_path()
joint.node_b = new_piece.get_path()
return new_piece
func get_piece_positions() -> Array:
var rope_points := []
rope_points.append(rope_start_joint.global_position)
for p in rope_pieces:
rope_points.append(p.global_position)
rope_points.append(rope_end_joint.global_position)
return rope_points
func _draw() -> void:
draw_polyline(rope_piece_positions, Color.blue, 2.0)

View File

@ -0,0 +1,7 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/Contraptions/Rope/Rope.gd" type="Script" id=1]
[node name="Rope" type="Node2D"]
z_index = -1
script = ExtResource( 1 )

View File

@ -0,0 +1,27 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://assets/environment/blocks/approx build block.png" type="Texture" id=1]
[sub_resource type="CircleShape2D" id=5]
radius = 2.0
[node name="RopeAnchor" type="RigidBody2D"]
z_index = -1
collision_layer = 256
collision_mask = 8
input_pickable = true
mode = 1
linear_damp = 1.0
angular_damp = 1.0
[node name="cshape" type="CollisionShape2D" parent="."]
shape = SubResource( 5 )
[node name="pjoint" type="PinJoint2D" parent="cshape"]
scale = Vector2( 0.3, 0.3 )
bias = 0.1
softness = 0.1
[node name="Sprite" type="Sprite" parent="."]
scale = Vector2( 0.1875, 0.1875 )
texture = ExtResource( 1 )

View File

@ -0,0 +1,5 @@
extends RigidBody2D
var id := -1
var prev_link: Object = null

View File

@ -0,0 +1,25 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://src/Contraptions/Rope/RopePiece.gd" type="Script" id=1]
[sub_resource type="CapsuleShape2D" id=1]
radius = 1.0
height = 1.0
[node name="RigidBody2D" type="RigidBody2D"]
collision_layer = 256
collision_mask = 8
gravity_scale = 3.0
linear_damp = 1.0
angular_damp = 1.0
script = ExtResource( 1 )
[node name="cshape" type="CollisionShape2D" parent="."]
position = Vector2( 0, 1.5 )
shape = SubResource( 1 )
[node name="pjoint" type="PinJoint2D" parent="cshape"]
position = Vector2( 0, 1.5 )
scale = Vector2( 0.3, 0.3 )
bias = 0.1
softness = 0.1

View File

@ -27,10 +27,7 @@ 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 = 8 frame = 11
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 10
[node name="Blobby" parent="." instance=ExtResource( 2 )] [node name="Blobby" parent="." instance=ExtResource( 2 )]
unique_name_in_owner = true unique_name_in_owner = true
@ -40,9 +37,6 @@ scale = Vector2( 0.878906, 0.936025 )
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"] [node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 4 ) parameters/playback = SubResource( 4 )
[node name="StateLabel" parent="Blobby" index="6"]
visible = false
[node name="Decor" type="Node2D" parent="."] [node name="Decor" type="Node2D" parent="."]
visible = false visible = false

View File

@ -54,7 +54,7 @@ position = Vector2( -259.915, 710.547 )
position = Vector2( 220, 804 ) position = Vector2( 220, 804 )
[node name="Caterpillar" parent="." instance=ExtResource( 5 )] [node name="Caterpillar" parent="." instance=ExtResource( 5 )]
position = Vector2( -37, 786 ) position = Vector2( 73, 882 )
[node name="Enemy2" parent="." instance=ExtResource( 6 )] [node name="Enemy2" parent="." instance=ExtResource( 6 )]
position = Vector2( 492, 804 ) position = Vector2( 492, 804 )

View File

@ -34,10 +34,189 @@ cell_size = Vector2( 24, 24 )
collision_layer = 8 collision_layer = 8
collision_mask = 8 collision_mask = 8
format = 1 format = 1
tile_data = PoolIntArray( -262152, 3, 0, -262151, 3, 0, -262150, 3, 0, -262149, 3, 0, -262148, 3, 0, -262147, 3, 0, -262146, 3, 0, -262145, 3, 0, -327680, 3, 0, -327679, 3, 0, -327678, 3, 0, -327677, 3, 0, -327676, 3, 0, -327675, 3, 0, -196616, 3, 0, -262139, 3, 0, -131080, 3, 0, -196603, 3, 0, -65544, 3, 0, -131067, 3, 0, -8, 3, 0, -65531, 3, 0, 65528, 3, 0, 65529, 3, 0, 65530, 3, 0, 65531, 3, 0, 65532, 3, 0, 65533, 4, 0, 65534, 4, 0, 65535, 4, 0, 0, 4, 0, 1, 4, 0, 2, 4, 0, 3, 4, 0, 4, 4, 0, 5, 4, 0 ) tile_data = PoolIntArray( -327685, 3, 0, -327684, 1610612738, 0, -327683, 1610612738, 0, -327682, 1610612738, 0, -327681, 1610612738, 0, -393216, 1610612738, 0, -393215, 1610612738, 0, -393214, 1610612738, 0, -393213, 1610612738, 0, -393212, 1610612738, 0, -393211, 1610612738, 0, -393210, 1610612738, 0, -393209, 1610612738, 0, -393208, 1610612738, 0, -393207, 1610612738, 0, -393206, 1610612738, 0, -393205, 3, 0, -262149, -1610612734, 0, -327669, -1073741822, 0, -196613, -1610612734, 0, -262133, -1073741822, 0, -131077, -1610612734, 0, -196597, -1073741822, 0, -65541, -1610612734, 0, -131061, -1073741822, 0, -5, -1610612734, 0, -65525, -1073741822, 0, 65531, 3, 0, 65532, 2, 0, 65533, 2, 0, 65534, 2, 0, 65535, 2, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 2, 0, 6, 2, 0, 7, 2, 0, 8, 2, 0, 9, 2, 0, 10, 2, 0, 11, 3, 0 )
[node name="ShaderGrass" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 108, -11.8 )
z_index = 1
[node name="ShaderGrass2" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 114, -11.8 )
z_index = 1
[node name="ShaderGrass3" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 123, -11.8 )
z_index = 1
[node name="ShaderGrass4" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 129, -11.8 )
z_index = 1
[node name="ShaderGrass5" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 135, -11.8 )
z_index = 1
[node name="ShaderGrass6" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 144, -11.8 )
z_index = 1
[node name="ShaderGrass7" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 153, -11.8 )
z_index = 1
[node name="ShaderGrass8" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 159, -11.8 )
z_index = 1
[node name="ShaderGrass9" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 48, -11.8 )
z_index = 1
[node name="ShaderGrass10" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 57, -11.8 )
z_index = 1
[node name="ShaderGrass11" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 66, -11.8 )
z_index = 1
[node name="ShaderGrass12" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 72, -11.8 )
z_index = 1
[node name="ShaderGrass13" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 78, -11.8 )
z_index = 1
[node name="ShaderGrass14" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 87, -11.8 )
z_index = 1
[node name="ShaderGrass15" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 96, -11.8 )
z_index = 1
[node name="ShaderGrass16" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 102, -11.8 )
z_index = 1
[node name="ShaderGrass17" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 222, -11.8 )
z_index = 1
[node name="ShaderGrass18" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 231, -11.8 )
z_index = 1
[node name="ShaderGrass19" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 240, -11.8 )
z_index = 1
[node name="ShaderGrass20" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 246, -11.8 )
z_index = 1
[node name="ShaderGrass21" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 252, -11.8 )
z_index = 1
[node name="ShaderGrass22" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 261, -11.8 )
z_index = 1
[node name="ShaderGrass23" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 270, -11.8 )
z_index = 1
[node name="ShaderGrass24" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 276, -11.8 )
z_index = 1
[node name="ShaderGrass25" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 165, -11.8 )
z_index = 1
[node name="ShaderGrass26" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 174, -11.8 )
z_index = 1
[node name="ShaderGrass27" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 183, -11.8 )
z_index = 1
[node name="ShaderGrass28" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 189, -11.8 )
z_index = 1
[node name="ShaderGrass29" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 195, -11.8 )
z_index = 1
[node name="ShaderGrass30" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 204, -11.8 )
z_index = 1
[node name="ShaderGrass31" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 213, -11.8 )
z_index = 1
[node name="ShaderGrass32" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 219, -12 )
z_index = 1
[node name="ShaderGrass33" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 105, -15 )
[node name="ShaderGrass35" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 120, -14.7 )
[node name="ShaderGrass37" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 132, -14.7 )
[node name="ShaderGrass39" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 150, -14.7 )
[node name="ShaderGrass43" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 63, -14.7 )
[node name="ShaderGrass45" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 75, -14.7 )
[node name="ShaderGrass47" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 93, -14.7 )
[node name="ShaderGrass49" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 219, -15 )
[node name="ShaderGrass51" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 237, -15 )
[node name="ShaderGrass53" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 249, -15 )
[node name="ShaderGrass55" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 267, -15 )
[node name="ShaderGrass57" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 162, -15 )
[node name="ShaderGrass59" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 180, -15 )
[node name="ShaderGrass61" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 192, -15 )
[node name="ShaderGrass63" parent="TileMap" instance=ExtResource( 5 )]
position = Vector2( 210, -15 )
[node name="BlobbyCam" parent="." instance=ExtResource( 11 )] [node name="BlobbyCam" parent="." instance=ExtResource( 11 )]
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 10
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 1
[node name="Blobby" parent="." instance=ExtResource( 10 )] [node name="Blobby" parent="." instance=ExtResource( 10 )]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2( -22, 8.00003 ) position = Vector2( -22, 8.00003 )
@ -49,223 +228,6 @@ parameters/playback = SubResource( 4 )
[node name="GameplaySignalManager" type="Node2D" parent="."] [node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 2 ) script = ExtResource( 2 )
[node name="ShaderGrass" parent="." instance=ExtResource( 5 )]
position = Vector2( -14.913, -2.37698 )
z_index = -1
[node name="ShaderGrass2" parent="." instance=ExtResource( 5 )]
position = Vector2( -11.482, -2.54797 )
[node name="ShaderGrass3" parent="." instance=ExtResource( 5 )]
position = Vector2( -5.7973, -2.461 )
[node name="ShaderGrass4" parent="." instance=ExtResource( 5 )]
position = Vector2( -9.6843, -3.88098 )
z_index = -1
[node name="ShaderGrass5" parent="." instance=ExtResource( 5 )]
position = Vector2( -1.7553, -2.40399 )
[node name="ShaderGrass6" parent="." instance=ExtResource( 5 )]
position = Vector2( -4.4593, -4.18997 )
z_index = -1
[node name="ShaderGrass7" parent="." instance=ExtResource( 5 )]
position = Vector2( 9.5887, -2.56998 )
[node name="ShaderGrass8" parent="." instance=ExtResource( 5 )]
position = Vector2( 3.4917, -2.35599 )
[node name="ShaderGrass9" parent="." instance=ExtResource( 5 )]
position = Vector2( 1.0897, -4.66699 )
z_index = -1
[node name="ShaderGrass10" parent="." instance=ExtResource( 5 )]
position = Vector2( 13.2737, -2.42599 )
z_index = -1
[node name="ShaderGrass11" parent="." instance=ExtResource( 5 )]
position = Vector2( 16.7047, -2.59698 )
[node name="ShaderGrass12" parent="." instance=ExtResource( 5 )]
position = Vector2( 22.3887, -2.50998 )
[node name="ShaderGrass13" parent="." instance=ExtResource( 5 )]
position = Vector2( 18.5017, -3.92899 )
z_index = -1
[node name="ShaderGrass14" parent="." instance=ExtResource( 5 )]
position = Vector2( 26.4307, -2.45297 )
[node name="ShaderGrass15" parent="." instance=ExtResource( 5 )]
position = Vector2( 23.7267, -4.23898 )
z_index = -1
[node name="ShaderGrass16" parent="." instance=ExtResource( 5 )]
position = Vector2( 37.7747, -2.61899 )
[node name="ShaderGrass17" parent="." instance=ExtResource( 5 )]
position = Vector2( 31.6777, -2.405 )
[node name="ShaderGrass18" parent="." instance=ExtResource( 5 )]
position = Vector2( 29.2757, -4.715 )
z_index = -1
[node name="ShaderGrass19" parent="." instance=ExtResource( 5 )]
position = Vector2( 40.4827, -2.37698 )
z_index = -1
[node name="ShaderGrass20" parent="." instance=ExtResource( 5 )]
position = Vector2( 43.9137, -2.54797 )
[node name="ShaderGrass21" parent="." instance=ExtResource( 5 )]
position = Vector2( 49.5987, -2.461 )
[node name="ShaderGrass22" parent="." instance=ExtResource( 5 )]
position = Vector2( 45.7117, -3.88098 )
z_index = -1
[node name="ShaderGrass23" parent="." instance=ExtResource( 5 )]
position = Vector2( 53.6407, -2.40399 )
[node name="ShaderGrass24" parent="." instance=ExtResource( 5 )]
position = Vector2( 50.9367, -4.18997 )
z_index = -1
[node name="ShaderGrass25" parent="." instance=ExtResource( 5 )]
position = Vector2( 64.9847, -2.56998 )
[node name="ShaderGrass26" parent="." instance=ExtResource( 5 )]
position = Vector2( 58.8877, -2.35599 )
[node name="ShaderGrass27" parent="." instance=ExtResource( 5 )]
position = Vector2( 56.4857, -4.66699 )
z_index = -1
[node name="ShaderGrass28" parent="." instance=ExtResource( 5 )]
position = Vector2( -44.4463, -2.54398 )
z_index = -1
[node name="ShaderGrass29" parent="." instance=ExtResource( 5 )]
position = Vector2( -41.0153, -2.715 )
[node name="ShaderGrass30" parent="." instance=ExtResource( 5 )]
position = Vector2( -35.3307, -2.62799 )
[node name="ShaderGrass31" parent="." instance=ExtResource( 5 )]
position = Vector2( -39.2176, -4.047 )
z_index = -1
[node name="ShaderGrass32" parent="." instance=ExtResource( 5 )]
position = Vector2( -31.2887, -2.57098 )
[node name="ShaderGrass33" parent="." instance=ExtResource( 5 )]
position = Vector2( -33.9927, -4.35699 )
z_index = -1
[node name="ShaderGrass34" parent="." instance=ExtResource( 5 )]
position = Vector2( -19.9447, -2.73599 )
[node name="ShaderGrass35" parent="." instance=ExtResource( 5 )]
position = Vector2( -26.0417, -2.52298 )
[node name="ShaderGrass36" parent="." instance=ExtResource( 5 )]
position = Vector2( -28.4437, -4.83298 )
z_index = -1
[node name="ShaderGrass37" parent="." instance=ExtResource( 5 )]
position = Vector2( -69.9751, -2.70999 )
z_index = -1
[node name="ShaderGrass38" parent="." instance=ExtResource( 5 )]
position = Vector2( -66.5441, -2.88098 )
[node name="ShaderGrass39" parent="." instance=ExtResource( 5 )]
position = Vector2( -60.8595, -2.79398 )
[node name="ShaderGrass40" parent="." instance=ExtResource( 5 )]
position = Vector2( -64.7464, -4.21399 )
z_index = -1
[node name="ShaderGrass41" parent="." instance=ExtResource( 5 )]
position = Vector2( -56.8175, -2.737 )
[node name="ShaderGrass42" parent="." instance=ExtResource( 5 )]
position = Vector2( -59.5215, -4.52298 )
z_index = -1
[node name="ShaderGrass43" parent="." instance=ExtResource( 5 )]
position = Vector2( -45.4735, -2.90298 )
[node name="ShaderGrass44" parent="." instance=ExtResource( 5 )]
position = Vector2( -51.5705, -2.689 )
[node name="ShaderGrass45" parent="." instance=ExtResource( 5 )]
position = Vector2( -53.9725, -5 )
z_index = -1
[node name="ShaderGrass46" parent="." instance=ExtResource( 5 )]
position = Vector2( -92, -2.54398 )
z_index = -1
[node name="ShaderGrass47" parent="." instance=ExtResource( 5 )]
position = Vector2( -88.569, -2.715 )
[node name="ShaderGrass48" parent="." instance=ExtResource( 5 )]
position = Vector2( -82.8844, -2.62799 )
[node name="ShaderGrass49" parent="." instance=ExtResource( 5 )]
position = Vector2( -86.7713, -4.047 )
z_index = -1
[node name="ShaderGrass50" parent="." instance=ExtResource( 5 )]
position = Vector2( -78.8424, -2.57098 )
[node name="ShaderGrass51" parent="." instance=ExtResource( 5 )]
position = Vector2( -81.5464, -4.35699 )
z_index = -1
[node name="ShaderGrass52" parent="." instance=ExtResource( 5 )]
position = Vector2( -67.4984, -2.73599 )
[node name="ShaderGrass53" parent="." instance=ExtResource( 5 )]
position = Vector2( -73.5954, -2.52298 )
[node name="ShaderGrass54" parent="." instance=ExtResource( 5 )]
position = Vector2( -75.9974, -4.83298 )
z_index = -1
[node name="ShaderGrass55" parent="." instance=ExtResource( 5 )]
position = Vector2( 57.0017, -2.54398 )
z_index = -1
[node name="ShaderGrass56" parent="." instance=ExtResource( 5 )]
position = Vector2( 60.4327, -2.715 )
[node name="ShaderGrass57" parent="." instance=ExtResource( 5 )]
position = Vector2( 66.1167, -2.62799 )
[node name="ShaderGrass58" parent="." instance=ExtResource( 5 )]
position = Vector2( 62.2307, -4.047 )
z_index = -1
[node name="ShaderGrass59" parent="." instance=ExtResource( 5 )]
position = Vector2( 70.1587, -2.57098 )
[node name="ShaderGrass60" parent="." instance=ExtResource( 5 )]
position = Vector2( 67.4547, -4.35699 )
z_index = -1
[node name="ShaderGrass61" parent="." instance=ExtResource( 5 )]
position = Vector2( 81.5027, -2.73599 )
[node name="ShaderGrass62" parent="." instance=ExtResource( 5 )]
position = Vector2( 75.4057, -2.52298 )
[node name="ShaderGrass63" parent="." instance=ExtResource( 5 )]
position = Vector2( 73.0037, -4.83298 )
z_index = -1
[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"] [connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"]
[connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"] [connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"]
[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"] [connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"]

View File

@ -0,0 +1,30 @@
extends Node2D
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
var start_pos := Vector2.ZERO
var end_pos := Vector2.ZERO
onready var rope: Node2D = null
func _ready() -> void:
rope = Rope.instance()
add_child(rope)
rope.spawn_rope($AnchorPos.global_position, Vector2($AnchorPos.global_position.x + 200, $AnchorPos.global_position.y))
rope.end_attached_node = $WhatAreFrog1
func _input(event):
if event is InputEventMouseButton && !event.is_pressed():
if start_pos == Vector2.ZERO:
start_pos = get_global_mouse_position()
elif end_pos == Vector2.ZERO:
end_pos = get_global_mouse_position()
rope = Rope.instance()
add_child(rope)
rope.spawn_rope(start_pos, end_pos)
start_pos = Vector2.ZERO
end_pos = Vector2.ZERO
# if rope != null && event.is_action_pressed("click"):
# rope.mouse_follow = true
# if event.is_action_released("click"):
# if rope != null:
# rope.mouse_follow = false

File diff suppressed because one or more lines are too long