diff --git a/maps/its_spring.tscn b/maps/its_spring.tscn index 75d2e33..37ca0ac 100644 --- a/maps/its_spring.tscn +++ b/maps/its_spring.tscn @@ -85,4 +85,4 @@ scale = Vector2(1.09184, 27.4543) position = Vector2(96, 176) [node name="Spring2" parent="." instance=ExtResource("9_dtd3x")] -position = Vector2(80, 88) +position = Vector2(96, 88) diff --git a/objects/player/player.gd b/objects/player/player.gd index ff052ca..edd2994 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -49,6 +49,11 @@ func kill() -> void: state_chart.send_event(&"killed") +func launch(impulse: Vector2) -> void: + velocity = impulse + state_chart.send_event(&"launched") + + #region Idle func _slow_to_stop(delta: float) -> void: velocity.x = move_toward(velocity.x, 0.0, stopping_force * delta) diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 1f54aee..c08bdcd 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -73,9 +73,9 @@ collision_layer = 16 collision_mask = 3 floor_snap_length = 3.0 script = ExtResource("1_xs4s5") -run_acceleration = 150.0 +run_acceleration = 200.0 max_run_speed = 100.0 -turn_acceleration = 250.0 +turn_acceleration = 300.0 stopping_force = 200.0 gravity = 450.0 jump_power = 180.0 @@ -157,6 +157,12 @@ to = NodePath("../Grounded") event = &"killed" delay_in_seconds = "0.0" +[node name="on Launched" type="Node" parent="StateChart/Root"] +script = ExtResource("7_rgjdc") +to = NodePath("../Airborne/Missile") +event = &"launched" +delay_in_seconds = "0.0" + [node name="Grounded" type="Node" parent="StateChart/Root"] editor_description = "Player is standing on a floor." script = ExtResource("6_jnxnd") diff --git a/objects/spring/spring.gd b/objects/spring/spring.gd index fc38b67..d905f8c 100644 --- a/objects/spring/spring.gd +++ b/objects/spring/spring.gd @@ -1,23 +1,26 @@ extends Node2D @export var bounce_power = 240.0 - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass - +@export var horizontal_boost = 20.0 func _on_area_2d_body_entered(body: Node2D) -> void: if body is Player: - if body.velocity.y == 0: - body.velocity.x = (body.jump_force * 1.5) * sign(-body.velocity.x) - else: - body.velocity.y = (body.jump_force * 1.5) * sign(-body.velocity.y) - body.velocity.x += body.graphics.scale.x * 20.0 + var dir = Vector2( + 1.0 if body.velocity.x >= 0.0 else -1.0, + -1.0 if body.velocity.y >= 0.0 else 1.0, + ) + + body.launch(Vector2( + body.velocity.x + (dir.x * horizontal_boost), + dir.y * bounce_power + )) + + #body.velocity.y = bounce_power * signf(-body.velocity.y) + #body.velocity.x += signf(body.velocity.x) * 20.0 + ##if body.velocity.y == 0: + ##body.velocity.x = (body.jump_force * 1.5) * sign(-body.velocity.x) + ##else: + ##body.velocity.y = (body.jump_force * 1.5) * sign(-body.velocity.y) + ##body.velocity.x += body.graphics.scale.x * 20.0 %AudioStreamPlayer.play() %AnimationPlayer.play("bounce") diff --git a/objects/spring/spring.tscn b/objects/spring/spring.tscn index 742a9f9..0868d49 100644 --- a/objects/spring/spring.tscn +++ b/objects/spring/spring.tscn @@ -55,7 +55,7 @@ hframes = 4 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] unique_name_in_owner = true libraries = { -"": SubResource("AnimationLibrary_2p5yk") +&"": SubResource("AnimationLibrary_2p5yk") } [node name="Area2D" type="Area2D" parent="."]