From 404f518ddd2cf473073fd735b7241d361b6e9259 Mon Sep 17 00:00:00 2001 From: OddlyTimbot Date: Wed, 1 Jul 2026 08:06:42 -0400 Subject: [PATCH] then there were rockets --- project.godot | 5 +++++ scenes/rocket.tscn | 15 +++++++++++++++ scripts/player.gd | 13 ++++++++++--- scripts/rocket.gd | 17 +++++++++++++++++ scripts/rocket.gd.uid | 1 + scripts/scene_manager.gd | 9 +++++++++ 6 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 scenes/rocket.tscn create mode 100644 scripts/rocket.gd create mode 100644 scripts/rocket.gd.uid diff --git a/project.godot b/project.godot index 36378c4..d7f5753 100644 --- a/project.godot +++ b/project.godot @@ -27,6 +27,11 @@ shoot={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) ] } +fire={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null) +] +} [physics] diff --git a/scenes/rocket.tscn b/scenes/rocket.tscn new file mode 100644 index 0000000..5458bf6 --- /dev/null +++ b/scenes/rocket.tscn @@ -0,0 +1,15 @@ +[gd_scene format=3 uid="uid://do4vf0eh7ku01"] + +[ext_resource type="Script" uid="uid://bv3ixqvmjrf8j" path="res://scripts/rocket.gd" id="1_3341w"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_00dr1"] +size = Vector2(12, 4) + +[node name="Rocket" type="RigidBody2D" unique_id=2026133878] +script = ExtResource("1_3341w") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1980926328] +shape = SubResource("RectangleShape2D_00dr1") +debug_color = Color(0.63964945, 0.5193221, 0.22762358, 0.41960785) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/player.gd b/scripts/player.gd index 0882d9c..9c09378 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -1,7 +1,7 @@ class_name Player extends CharacterBody2D signal pushSignal(body, direction) signal shootSignal(markerPosition, speed) - +signal fireSignal(markerPosition, direction, speed) @onready var right_cast: RayCast2D = $RightCast @onready var left_cast: RayCast2D = $LeftCast @onready var right_spawn: Marker2D = $RightSpawn @@ -39,7 +39,7 @@ func _physics_process(delta: float) -> void: pushSignal.emit(pushTarget, Vector2(1,0)*100*(pushForce/100)) if pushLeftEnabled and facing==FaceDirection.LEFT: pushSignal.emit(pushTarget, Vector2(-1,0)*100*(pushForce/100)) - #Handle Shoot + #Handle Shoot Bullet if Input.is_action_just_pressed("shoot"): print("Ima shoot a bullet") #marker postion, speed @@ -48,7 +48,14 @@ func _physics_process(delta: float) -> void: shootSignal.emit(right_spawn.global_transform, 800) FaceDirection.LEFT: shootSignal.emit(left_spawn.global_transform, 800) - + #Handle fire rocket + if Input.is_action_just_pressed("fire"): + print("Ima fire rocket") + match facing: + FaceDirection.RIGHT: + fireSignal.emit(right_spawn.global_transform,Vector2(1,0), 800) + FaceDirection.LEFT: + fireSignal.emit(left_spawn.global_transform,Vector2(1,0), 800) # Get the input direction and handle the movement/deceleration. # As good practice, you should replace UI actions with custom gameplay actions. var direction := Input.get_axis("ui_left", "ui_right") diff --git a/scripts/rocket.gd b/scripts/rocket.gd new file mode 100644 index 0000000..b751739 --- /dev/null +++ b/scripts/rocket.gd @@ -0,0 +1,17 @@ +class_name Rocket extends RigidBody2D + +func _ready() -> void: + #Rockets expolode in time + var timer = Timer.new() + add_child(timer) + timer.wait_time = 4 + timer.one_shot = true + timer.connect("timeout", splode) + timer.start() + +func _on_body_entered(body: Node) -> void: + print("Rocket hit a target") + +#should i splode myself? +func splode()->void: + self.queue_free() diff --git a/scripts/rocket.gd.uid b/scripts/rocket.gd.uid new file mode 100644 index 0000000..26682b8 --- /dev/null +++ b/scripts/rocket.gd.uid @@ -0,0 +1 @@ +uid://bv3ixqvmjrf8j diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index 8dc5dbc..1954b31 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -4,6 +4,8 @@ extends Node2D @onready var player: Player = $"../Player" var bullet = preload("res://scenes/bullet.tscn") +var rocket = preload("res://scenes/rocket.tscn") + var bulletArray:Array[Bullet] = [] var totalAllowedBullets:int = 7 @@ -12,6 +14,7 @@ func _ready() -> void: #signals from the view player.pushSignal.connect(pushTarget) player.shootSignal.connect(makeBullet) + player.fireSignal.connect(makeRocket) #signals from the GameController game.destroySignal.connect(destroy) @@ -71,3 +74,9 @@ func makeBullet(spawnPosition, speed)->void: myBullet.transform = spawnPosition myBullet.setSpeed(speed) +func makeRocket(spawnPosition, direction, speed)->void: + print("make a rocket") + var myRocket = rocket.instantiate() + add_sibling(myRocket) + myRocket.transform = spawnPosition + pushTarget(myRocket,direction*speed)