From 3689e9a43b36cb503fe6c39e032712bdd44bc1a0 Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Thu, 5 Jan 2023 00:02:09 +0100 Subject: [PATCH] Frog jumps only within radius --- src/Actors/BlobbyCam.tscn | 8 ++++---- src/Actors/Enemies/Beings/BoundFrog.gd | 6 ++++-- src/Actors/Enemies/Beings/WhatAreFrog.gd | 22 +++++++++++++++++++--- src/Levels/The Line Level.tscn | 2 +- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/Actors/BlobbyCam.tscn b/src/Actors/BlobbyCam.tscn index 6fe5a84..09b387a 100644 --- a/src/Actors/BlobbyCam.tscn +++ b/src/Actors/BlobbyCam.tscn @@ -199,7 +199,7 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0.6 ), +"times": PoolRealArray( 0.01 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ -10000000 ] @@ -211,7 +211,7 @@ tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0.6 ), +"times": PoolRealArray( 0.02 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ -10000000 ] @@ -223,7 +223,7 @@ tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { -"times": PoolRealArray( 0.6 ), +"times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 10000000 ] @@ -235,7 +235,7 @@ tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { -"times": PoolRealArray( 0.6 ), +"times": PoolRealArray( 0.59 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 10000000 ] diff --git a/src/Actors/Enemies/Beings/BoundFrog.gd b/src/Actors/Enemies/Beings/BoundFrog.gd index 07a7545..48e7bef 100644 --- a/src/Actors/Enemies/Beings/BoundFrog.gd +++ b/src/Actors/Enemies/Beings/BoundFrog.gd @@ -1,5 +1,6 @@ extends Node2D +export var movement_radius = 200 var Rope = preload("res://src/Contraptions/Rope/Rope.tscn") var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn") @@ -15,8 +16,9 @@ func _on_LevelTemplate_ready() -> void: rope.rope_start = get_node("WhatAreFrog") rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") rope.rope_start_joint = get_node("WhatAreFrog/cshape/pjoint") - rope.spawn_rope($WhatAreFrog.global_position, $WhatAreFrog.global_position + Vector2(100,0), false) - pass + rope.spawn_rope($WhatAreFrog.global_position, $RopeAnchor.global_position, false) + + $WhatAreFrog.bind_to_anchor($RopeAnchor, movement_radius) # Executes on frog death # The old switchero diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.gd b/src/Actors/Enemies/Beings/WhatAreFrog.gd index 6291b6d..d638909 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.gd +++ b/src/Actors/Enemies/Beings/WhatAreFrog.gd @@ -6,9 +6,13 @@ onready var jump_timer: Timer export var score := 100 -var start_x = 0 -var in_air = false -var is_hurt = false +var movement_radius: float +var anchor: Node2D +var is_bound := false + +var start_x := 0 +var in_air := false +var is_hurt := false func _ready(): jump_timer = Timer.new() @@ -16,6 +20,11 @@ func _ready(): jump_timer.connect("timeout", self, "jump") add_child(jump_timer) +func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void: + anchor = anchor_node + movement_radius = radius + is_bound = true + # TODO adapt to groups # TODO Engine error here(what does it WANT???) func _on_StompDetector_body_entered(body: Node) -> void: @@ -30,6 +39,13 @@ func execute_movement(delta: float) -> void: velocity.y += _gravity * delta if sign(velocity.x) != orientation.cast_to.x: velocity.x *= -1 + if(is_bound): + var next_position = global_position + velocity*delta + var distance_to_anchor = global_position.distance_to(anchor.global_position) + var new_distance = next_position.distance_to(anchor.global_position) + if(new_distance > movement_radius): + velocity = velocity/2 + orientation.cast_to.x *= -1 velocity = move_and_slide(velocity, FLOOR_NORMAL, false, 4, 0.785398,false) if(is_on_floor()): velocity = Vector2(0,0) diff --git a/src/Levels/The Line Level.tscn b/src/Levels/The Line Level.tscn index 1583684..29f2d0d 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( 121, 324 ) +position = Vector2( -13, 324 ) [node name="BlobbyCam" parent="." instance=ExtResource( 11 )]