Adjusted stock shot spacing and added muzzle flash.

This commit is contained in:
Henry 2026-03-31 13:30:15 +01:00
parent 01fe64a3e7
commit b6bef3f13a
6 changed files with 160 additions and 45 deletions

BIN
graphics/muzzle_flash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crmbupr3qg0j"
path="res://.godot/imported/muzzle_flash.png-a4acd317005dff07444b3286deac56f4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://graphics/muzzle_flash.png"
dest_files=["res://.godot/imported/muzzle_flash.png-a4acd317005dff07444b3286deac56f4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -6,6 +6,6 @@
[resource] [resource]
script = ExtResource("1_dpne1") script = ExtResource("1_dpne1")
shot_name = "Stock" shot_name = "Stock"
speed = -300 speed = -350
cooldown = 0.0 cooldown = 0.0
metadata/_custom_type_script = "uid://ccdohs4gduee5" metadata/_custom_type_script = "uid://ccdohs4gduee5"

View file

@ -3,18 +3,108 @@
[ext_resource type="Script" uid="uid://otm88638j7f8" path="res://scripts/player.gd" id="1_g2els"] [ext_resource type="Script" uid="uid://otm88638j7f8" path="res://scripts/player.gd" id="1_g2els"]
[ext_resource type="PackedScene" uid="uid://ddpclu2vdy2ve" path="res://scenes/stock_weapon.tscn" id="2_dqkch"] [ext_resource type="PackedScene" uid="uid://ddpclu2vdy2ve" path="res://scenes/stock_weapon.tscn" id="2_dqkch"]
[ext_resource type="Texture2D" uid="uid://cq4we1m1yv22s" path="res://graphics/ship.png" id="2_qhqgy"] [ext_resource type="Texture2D" uid="uid://cq4we1m1yv22s" path="res://graphics/ship.png" id="2_qhqgy"]
[ext_resource type="Texture2D" uid="uid://crmbupr3qg0j" path="res://graphics/muzzle_flash.png" id="4_dqkch"]
[ext_resource type="Texture2D" uid="uid://b0iavxi8vaxtj" path="res://graphics/ship_thrusters.png" id="5_qlg0r"]
[sub_resource type="AtlasTexture" id="AtlasTexture_tuyoq"]
atlas = ExtResource("5_qlg0r")
region = Rect2(28, 0, 14, 6)
[sub_resource type="AtlasTexture" id="AtlasTexture_fjrip"]
atlas = ExtResource("5_qlg0r")
region = Rect2(42, 0, 14, 6)
[sub_resource type="AtlasTexture" id="AtlasTexture_smehm"]
atlas = ExtResource("5_qlg0r")
region = Rect2(1, 0, 14, 6)
[sub_resource type="AtlasTexture" id="AtlasTexture_ur7pv"]
atlas = ExtResource("5_qlg0r")
region = Rect2(15, 0, 14, 6)
[sub_resource type="SpriteFrames" id="SpriteFrames_y4r1p"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_tuyoq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fjrip")
}],
"loop": true,
"name": &"banked",
"speed": 15.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_smehm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ur7pv")
}],
"loop": true,
"name": &"fwd",
"speed": 15.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_qlg0r"]
atlas = ExtResource("4_dqkch")
region = Rect2(0, 0, 15, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_y4r1p"]
atlas = ExtResource("4_dqkch")
region = Rect2(15, 0, 15, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_d2wvv"]
atlas = ExtResource("4_dqkch")
region = Rect2(30, 0, 15, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_3v2ag"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_qlg0r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y4r1p")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d2wvv")
}],
"loop": true,
"name": &"stock",
"speed": 15.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_dqkch"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_dqkch"]
size = Vector2(10, 11)
[node name="Player" type="Area2D" unique_id=652131079] [node name="Player" type="Area2D" unique_id=652131079]
script = ExtResource("1_g2els") script = ExtResource("1_g2els")
speed = 165
weapon_current = ExtResource("2_dqkch") weapon_current = ExtResource("2_dqkch")
[node name="Ship" type="Sprite2D" parent="." unique_id=1155866924] [node name="Ship" type="Sprite2D" parent="." unique_id=1155866924]
unique_name_in_owner = true unique_name_in_owner = true
texture = ExtResource("2_qhqgy") texture = ExtResource("2_qhqgy")
hframes = 3
region_rect = Rect2(0, 0, 62, 24.370766)
[node name="Thrusters" type="AnimatedSprite2D" parent="Ship" unique_id=2096876587]
position = Vector2(0, 15)
sprite_frames = SubResource("SpriteFrames_y4r1p")
animation = &"fwd"
autoplay = "fwd"
[node name="MuzzleFlash" type="AnimatedSprite2D" parent="Ship" unique_id=1584132038]
unique_name_in_owner = true
position = Vector2(0, -16)
sprite_frames = SubResource("SpriteFrames_3v2ag")
animation = &"stock"
autoplay = "stock"
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=485826453] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=485826453]
position = Vector2(0, -3.5)
shape = SubResource("RectangleShape2D_dqkch") shape = SubResource("RectangleShape2D_dqkch")
[node name="WeaponCooldown" type="Timer" parent="." unique_id=269678170] [node name="WeaponCooldown" type="Timer" parent="." unique_id=269678170]

View file

@ -3,7 +3,8 @@ extends Area2D
@export var speed: int = 150 @export var speed: int = 150
@export var shield_max: int = 10 @export var shield_max: int = 10
var velocity: Vector2 = Vector2.ZERO #var ship = %Ship
var shield: int = 0: set = shield_set var shield: int = 0: set = shield_set
var can_shoot: bool = true var can_shoot: bool = true
var is_shooting: bool = false var is_shooting: bool = false
@ -27,55 +28,42 @@ func _process(delta):
ship_displacement = position.y - previous_position.y ship_displacement = position.y - previous_position.y
travel += bullet_speed * delta + (ship_displacement) travel += bullet_speed * delta + (ship_displacement)
travel = clamp(travel, 0, 1.9 * weapon_spacing) travel = clamp(travel, 0, 1.9 * weapon_spacing)
#TODO: sprite frame change on x axis
#if input.x > 0: # Sprite feedback based one player input
#$Ship.frame = 2 if input.x > 0:
#$Ship/Boosters.animation = "right" %Ship.frame = 2
#elif input.x < 0: %Ship/Thrusters.flip_h = true
#$Ship.frame = 0 %Ship/Thrusters.animation = "banked"
#$Ship/Boosters.animation = "left" elif input.x < 0:
#else: %Ship.frame = 1
#$Ship.frame = 1 %Ship/Thrusters.flip_h = false
#$Ship/Boosters.animation = "forward" %Ship/Thrusters.animation = "banked"
else:
%Ship.frame = 0
%Ship/Thrusters.flip_h = false
%Ship/Thrusters.animation = "fwd"
previous_position = position previous_position = position
position += input * speed * delta position += input * speed * delta
position = position.clamp(Vector2(12,12), screensize - Vector2(12,12)) 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"):
#direction.y += 1
#if Input.is_action_pressed("up"):
#direction.y -= 1
#
## Normalize direction and apply speed
#if direction.length() > 0:
#velocity = direction.normalized() * speed
# Update velocity
#velocity += velocity * delta
velocity = input * speed
if Input.is_action_pressed("shoot"): if Input.is_action_pressed("shoot"):
print("Spacebar pressed!")
is_shooting = true is_shooting = true
else: else:
is_shooting = false is_shooting = false
if is_shooting == true: if is_shooting == true:
print("Spacebar pressed!")
%MuzzleFlash.show()
%Ship/MuzzleFlash.animation = "stock"
if travel > weapon_spacing: if travel > weapon_spacing:
shoot() shoot()
travel -= weapon_spacing travel -= weapon_spacing
#weapon_timer += delta if is_shooting == false:
#print(weapon_timer) %MuzzleFlash.hide()
#if weapon_timer >= weapon_rate:
#shoot()
#weapon_timer = 0.0
if is_shooting == false: return
func shield_set(_value: int): func shield_set(_value: int):
return return
@ -88,16 +76,13 @@ func _on_weapon_cooldown_timeout() -> void:
func shoot(): func shoot():
# Instantiate the bullet
var bullet = weapon_current.instantiate() var bullet = weapon_current.instantiate()
bullet.position = position + Vector2(0,-20)
#previous_position = position
get_tree().root.add_child(bullet) get_tree().root.add_child(bullet)
bullet.position = position + Vector2(0,-23)
weapon_rate = bullet.shot_data.rate weapon_rate = bullet.shot_data.rate
weapon_spacing = bullet.shot_data.spacing weapon_spacing = bullet.shot_data.spacing
bullet_speed = abs(bullet.shot_data.speed) 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 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

View file

@ -3,8 +3,8 @@ extends Resource
@export var shot_name: String @export var shot_name: String
@export var damage: int = 1 @export var damage: int = 1
@export var speed: int = 100 @export var speed: int = 135
@export var rate: float = 0.1 @export var rate: float = 0.1
@export var cooldown: float = 0.25 @export var cooldown: float = 0.25
@export var sprite: Texture2D = preload("res://graphics/shot.png") @export var sprite: Texture2D = preload("res://graphics/shot.png")
@export var spacing: float = 50 @export var spacing: float = 35