diff --git a/src/Actors/Enemies/Beings/BoundFrog.gd b/src/Actors/Enemies/Beings/BoundFrog.gd index dfbb0f0..4e46929 100644 --- a/src/Actors/Enemies/Beings/BoundFrog.gd +++ b/src/Actors/Enemies/Beings/BoundFrog.gd @@ -1,6 +1,7 @@ extends Node2D -export var movement_radius = 200 +# Is given in blocks +export var movement_radius = 6 var Rope = preload("res://src/Contraptions/Rope/Rope.tscn") var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn") @@ -33,11 +34,11 @@ func _on_WhatAreFrog_child_exiting_tree(node:Node) -> void: # For some reason the rope only can be instanced in the parent scene # The scene also has to be ready beforehand get_parent().add_child(rope) - rope.rope_end = get_node("RopeAnchor") + rope.rope_end = $RopeAnchor rope.rope_start = anchor - rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") + rope.rope_end_joint = $RopeAnchor/cshape/pjoint rope.rope_start_joint = anchor.get_node("cshape/pjoint") - rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, movement_radius * 10, false) + rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, movement_radius, false) is_first_signal = false # rope.rope_start = anchor # anchor.global_position = rope.rope_start_joint.global_position diff --git a/src/Actors/Enemies/Beings/BoundFrog.tscn b/src/Actors/Enemies/Beings/BoundFrog.tscn index 26356d3..548f7a3 100644 --- a/src/Actors/Enemies/Beings/BoundFrog.tscn +++ b/src/Actors/Enemies/Beings/BoundFrog.tscn @@ -6,7 +6,7 @@ [node name="BoundFrog" type="Node2D"] script = ExtResource( 3 ) -movement_radius = 100 +movement_radius = 7 [node name="WhatAreFrog" parent="." instance=ExtResource( 1 )] diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.gd b/src/Actors/Enemies/Beings/WhatAreFrog.gd index 1fd3e81..610cc41 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.gd +++ b/src/Actors/Enemies/Beings/WhatAreFrog.gd @@ -9,7 +9,10 @@ onready var jump_timer: Timer onready var target_lost_timer: Timer export var score := 100 +# Is given in blocks +export var vision_distance := 6.0 +# Also in blocks var movement_radius: float var anchor: Node2D var is_bound := false @@ -37,7 +40,7 @@ func _ready(): func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void: anchor = anchor_node - movement_radius = radius + movement_radius = radius * 24 is_bound = true @@ -101,7 +104,7 @@ func detect_player() -> void: var player if(!players.empty()): player = players[0] - vision_raycast.cast_to = (player.global_position - global_position).normalized() * 100 + vision_raycast.cast_to = (player.global_position - global_position).normalized() * 24 * vision_distance var ray_angle_to_facing = vision_raycast.cast_to.angle_to(orientation.cast_to) var collider = vision_raycast.get_collider() if(target == null && abs(ray_angle_to_facing) < PI/4 && collider != null && collider.is_in_group("player")): diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.tscn b/src/Actors/Enemies/Beings/WhatAreFrog.tscn index ed6193c..abb91b4 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.tscn +++ b/src/Actors/Enemies/Beings/WhatAreFrog.tscn @@ -9,7 +9,7 @@ extents = Vector2( 2.72463, 1.17848 ) [sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 15.4794, 6.68174 ) +extents = Vector2( 13, 5.12039 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 15.534, 10.0962 ) @@ -54,7 +54,7 @@ cast_to = Vector2( 0, -13 ) collision_mask = 56 [node name="Orientation" type="RayCast2D" parent="."] -cast_to = Vector2( -1, 0 ) +cast_to = Vector2( 1, 0 ) collision_mask = 0 collide_with_bodies = false @@ -97,6 +97,7 @@ collision_layer = 2 input_pickable = false [node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"] +position = Vector2( -4.76837e-07, 1.56134 ) shape = SubResource( 2 ) [node name="EnemySkin" type="Area2D" parent="." groups=["player"]] diff --git a/src/Contraptions/Rope/Rope.gd b/src/Contraptions/Rope/Rope.gd index 9d7e449..f66d4bc 100644 --- a/src/Contraptions/Rope/Rope.gd +++ b/src/Contraptions/Rope/Rope.gd @@ -1,5 +1,10 @@ extends Node2D +onready var rope_start +onready var rope_end +onready var rope_start_joint +onready var rope_end_joint + var RopePiece = preload("res://src/Contraptions/Rope/RopePiece.tscn") var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn") var piece_length := 2.0 @@ -7,26 +12,23 @@ var rope_close_tolerance := 2.0 var rope_pieces := [] var rope_piece_positions : PoolVector2Array= [] var anchor_distance := 1.0 +# Is given in blocks var movement_radius := 1.0 -export var mouse_follow := false - -onready var rope_start -onready var rope_end -onready var rope_start_joint -onready var rope_end_joint +export var rope_tightness := 0.5 func _physics_process(_delta: float) -> void: - #Resize or reinitialize? - if(mouse_follow): - rope_end.global_position = get_global_mouse_position() + # TODO Resize or reinitialize? rope_piece_positions.resize(0) rope_piece_positions = get_piece_positions() anchor_distance = rope_piece_positions[0].distance_to(rope_piece_positions[-1]) if !rope_piece_positions.empty(): update() -func spawn_rope(start_pos: Vector2, end_pos: Vector2, m_radius: float = 10000, new_anchors: bool = true): +func spawn_rope(start_pos: Vector2, end_pos: Vector2, m_radius: float = 100, new_anchors: bool = true): + # The rope should be the defined length even if the anchors are close together/far apart + movement_radius = m_radius * 24 + var mock_end_pos = start_pos + (end_pos - start_pos).normalized() * movement_radius * rope_tightness if(new_anchors): rope_start = RopeAnchor.instance() rope_end = RopeAnchor.instance() @@ -34,13 +36,14 @@ func spawn_rope(start_pos: Vector2, end_pos: Vector2, m_radius: float = 10000, n 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 - movement_radius = m_radius - anchor_distance = start_pos.distance_to(end_pos) + rope_start.global_position = start_pos + rope_end.global_position = mock_end_pos + anchor_distance = start_pos.distance_to(mock_end_pos) var pieces_amount = round(anchor_distance / piece_length) - var spawn_angle = (end_pos-start_pos).angle() - PI/2 - create_rope(pieces_amount, rope_start, end_pos, spawn_angle) + var spawn_angle = (mock_end_pos-start_pos).angle() - PI/2 + create_rope(pieces_amount, rope_start, mock_end_pos, spawn_angle) + rope_end.global_position = end_pos + func create_rope(pieces_amount: int, last_piece: Object, end_pos: Vector2, spawn_angle: float) -> void: for i in pieces_amount: diff --git a/src/Contraptions/Rope/Rope.tscn b/src/Contraptions/Rope/Rope.tscn index 6176a2e..c387e62 100644 --- a/src/Contraptions/Rope/Rope.tscn +++ b/src/Contraptions/Rope/Rope.tscn @@ -5,3 +5,4 @@ [node name="Rope" type="Node2D"] z_index = -1 script = ExtResource( 1 ) +rope_tightness = 0.5 diff --git a/src/Levels/The Line Level.tscn b/src/Levels/The Line Level.tscn index d000669..41fba88 100644 --- a/src/Levels/The Line Level.tscn +++ b/src/Levels/The Line Level.tscn @@ -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 ) [node name="Spikes" parent="." instance=ExtResource( 13 )] -position = Vector2( 231, 203 ) +position = Vector2( 252, 323 ) [node name="BlobbyCam" parent="." instance=ExtResource( 11 )] @@ -50,15 +50,7 @@ scale = Vector2( 0.878906, 0.936025 ) parameters/playback = SubResource( 4 ) [node name="BoundFrog" parent="." instance=ExtResource( 12 )] -position = Vector2( 57, 324 ) -scale = Vector2( 0.878906, 0.936025 ) -movement_radius = 300 - -[node name="WhatAreFrog" parent="BoundFrog" index="0"] -position = Vector2( 187.733, 0 ) - -[node name="RopeAnchor" parent="BoundFrog" index="1"] -position = Vector2( 167.253, 9.61514 ) +position = Vector2( 200, 323 ) [node name="Collectibles" type="Node2D" parent="."] visible = false