From 2594dd6e3d2c8dd158cd15b0494350872f623cf2 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 27 Mar 2026 11:36:19 +0000 Subject: [PATCH] Roughed in basically working equidistant bullet code thanks to Brendan, Mackenzie, and Sophie. --- graphics/ship.aseprite | Bin 0 -> 559 bytes scripts/player.gd | 51 +++++++++++++++++++--------------------- scripts/player_shot.gd | 1 + scripts/stock_weapon.gd | 10 +------- 4 files changed, 26 insertions(+), 36 deletions(-) create mode 100644 graphics/ship.aseprite diff --git a/graphics/ship.aseprite b/graphics/ship.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..0cb99dea61a462e172b7d94600aec621da7ae3a1 GIT binary patch literal 559 zcmdOAVqkc%l#$^9BOfCN10w?iLkbWhfC2*}NRUAQ2x$S<15N++kp*lk3(x{FAZAwp zTZv>{7Ld&Xa-9N@p`>8qs$r96Y1kiTeZNrc=7O|$hiCo%WH$3@K-NA3^C@}WnfgKA zDn>Sz_Vy(P2~E*?50hvAk3ak5^zA?Y|No!8c6&=*duCQvWLQv{Q`Z_JqnqK$*Q9-~C!OVM zQQ&FOz8+?wFbsd@34JJx*lUp!fln#)h-YCiruZ^wbeOS2^SuPe^BXqaJd zE^eKy5Uh|~nYPwA>~cXzj@*A%=Fj)c&$#Vt3aYxlac|7k_-))(`l(NhMB+@hZCrJ{ z?L)z`l!uSCp6Ba4IQBDGVN&L^YW4^2Q!gBojgR-YXPhk<^=s1wr_`7^&z4_I_PRJb g?m2s?jLo^}KQARt{PBOM@0-i^|Bpz2P87%o03gDwr2qf` literal 0 HcmV?d00001 diff --git a/scripts/player.gd b/scripts/player.gd index 1de40c4..4262e3b 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -8,18 +8,25 @@ var shield: int = 0: set = shield_set var can_shoot: bool = true var is_shooting: bool = false var previous_position: Vector2 +var ship_displacement: float +var travel: float = 0 +var bullet_speed: int = 150 @export var weapon_current : PackedScene + #var weapon_current = load("res://scenes/stock_weapon.tscn") var weapon_cooldown = Timer var weapon_rate: float = 0.1 var weapon_timer: float = 0.0 +var weapon_spacing: float = 0.1 @onready var screensize = get_viewport_rect().size - + func _process(delta): var input = Input.get_vector("left", "right", "up","down") - + ship_displacement = position.y - previous_position.y + travel += bullet_speed * delta + (ship_displacement) + travel = clamp(travel, 0, 1.9 * weapon_spacing) #TODO: sprite frame change on x axis #if input.x > 0: #$Ship.frame = 2 @@ -30,10 +37,10 @@ func _process(delta): #else: #$Ship.frame = 1 #$Ship/Boosters.animation = "forward" - + + previous_position = position position += input * speed * delta position = position.clamp(Vector2(12,12), screensize - Vector2(12,12)) - # Update velocity based on input #var direction = Vector2.ZERO #if Input.is_action_pressed("down"): @@ -53,15 +60,20 @@ func _process(delta): if Input.is_action_pressed("shoot"): print("Spacebar pressed!") is_shooting = true + else: is_shooting = false if is_shooting == true: - weapon_timer += delta - print(weapon_timer) - if weapon_timer >= weapon_rate: + if travel > weapon_spacing: shoot() - weapon_timer = 0.0 + travel -= weapon_spacing + + #weapon_timer += delta + #print(weapon_timer) + #if weapon_timer >= weapon_rate: + #shoot() + #weapon_timer = 0.0 if is_shooting == false: return @@ -76,31 +88,16 @@ func _on_weapon_cooldown_timeout() -> void: func shoot(): - - #if not can_shoot: return - #if can_shoot: var bullet = weapon_current.instantiate() - bullet.position = self.position + Vector2(0,-20) - previous_position = self.position + bullet.position = position + Vector2(0,-20) + #previous_position = position get_tree().root.add_child(bullet) weapon_rate = bullet.shot_data.rate + weapon_spacing = bullet.shot_data.spacing + bullet_speed = abs(bullet.shot_data.speed) #bullet.global_transform = self.global_transform prints(bullet.shot_data.shot_name, "weapon fired") #Print which weapon is firing #weapon_cooldown = $WeaponCooldown #weapon_cooldown.wait_time = bullet.shot_data.cooldown #weapon_cooldown.start() #can_shoot = not can_shoot - - - - -#I track the vertical distance the last bullet traveled relative to the ship: -# -#travel += bulletSpeed*dt + (Ship.y - prevShipY) -#set prevShipY to Ship.y -# -#when travel > spacing -> fire bullet and -# -#set travel -= spacing -# -#(where spacing is the distance you want bullets to be apart, in pixels) diff --git a/scripts/player_shot.gd b/scripts/player_shot.gd index 948979b..98bf23d 100644 --- a/scripts/player_shot.gd +++ b/scripts/player_shot.gd @@ -7,3 +7,4 @@ extends Resource @export var rate: float = 0.1 @export var cooldown: float = 0.25 @export var sprite: Texture2D = preload("res://graphics/shot.png") +@export var spacing: float = 50 diff --git a/scripts/stock_weapon.gd b/scripts/stock_weapon.gd index 90d9bb2..b3e7f8c 100644 --- a/scripts/stock_weapon.gd +++ b/scripts/stock_weapon.gd @@ -7,15 +7,7 @@ extends Area2D func _process(delta): - var spacing: int = 100 - var travel: float - travel += shot_data.speed * delta + (player.position.y - player.previous_position.y) - player.previous_position.y = player.position.y - - if travel > spacing: - print("travel is greater than spacing!") - position += shot_data.speed * delta # This works normally - travel -= spacing + position.y += shot_data.speed * delta # This works normally func _on_visible_on_screen_notifier_2d_screen_exited() -> void: queue_free()