From c3c199a9f9b90b1dcbe86fc4e780a53ce55bac95 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Wed, 26 Nov 2025 18:04:31 +0300 Subject: [PATCH] Trying to rework cannon, gatling, launcher --- game/entities/ships/abstract_ship.gd | 2 + .../ships/enemies/abstract_enemy_ship.tscn | 1 + game/entities/ships/player/player_ship.tscn | 8 +-- game/entities/weapons/cannon/cannon_weapon.gd | 48 ++----------- .../weapons/cannon/cannon_weapon.tscn | 11 +++ .../weapons/gatling/gatling_weapon.gd | 9 +++ .../weapons/gatling/gatling_weapon.tscn | 37 ++++++++-- game/entities/weapons/laser/laser_weapon.tscn | 16 ++--- .../weapons/launcher/launcher_weapon.gd | 48 ++++--------- .../weapons/launcher/launcher_weapon.tscn | 70 +++++-------------- images/ships/player.png | 3 + images/ships/player.png.import | 40 +++++++++++ images/weapons.png | 4 +- 13 files changed, 143 insertions(+), 154 deletions(-) create mode 100644 images/ships/player.png create mode 100644 images/ships/player.png.import diff --git a/game/entities/ships/abstract_ship.gd b/game/entities/ships/abstract_ship.gd index 6234fbe..4d1b0d4 100644 --- a/game/entities/ships/abstract_ship.gd +++ b/game/entities/ships/abstract_ship.gd @@ -31,6 +31,7 @@ signal destroyed @export_range(0, 250) var max_speed : int = 0 @export_range(0, 1000) var mass : int = 0 +@export_range(0, 360) var weapon_rotation : int = 0 @export var weapon_positions: Array[Vector2] @@ -41,6 +42,7 @@ func _ready() -> void: for pos in weapon_positions: var weapon : AbstractWeapon = WEAPONS.pick_random().instantiate() weapon.position = pos + weapon.rotation = deg_to_rad(weapon_rotation) add_child(weapon) _weapons.append(weapon) diff --git a/game/entities/ships/enemies/abstract_enemy_ship.tscn b/game/entities/ships/enemies/abstract_enemy_ship.tscn index 52f794a..056a927 100644 --- a/game/entities/ships/enemies/abstract_enemy_ship.tscn +++ b/game/entities/ships/enemies/abstract_enemy_ship.tscn @@ -8,6 +8,7 @@ collision_layer = 4 collision_mask = 2 script = ExtResource("2_fwvrd") +weapon_rotation = 180 [node name="EnemyController" parent="." index="4" node_paths=PackedStringArray("ship") instance=ExtResource("3_l8c0n")] ship = NodePath("..") diff --git a/game/entities/ships/player/player_ship.tscn b/game/entities/ships/player/player_ship.tscn index db4765a..8eadcb2 100644 --- a/game/entities/ships/player/player_ship.tscn +++ b/game/entities/ships/player/player_ship.tscn @@ -3,9 +3,7 @@ [ext_resource type="PackedScene" uid="uid://jvyagshykmgb" path="res://game/entities/ships/abstract_ship.tscn" id="1_6otxb"] [ext_resource type="Script" uid="uid://ruxw1n03iq4i" path="res://game/entities/ships/player/player_ship.gd" id="2_625ti"] [ext_resource type="PackedScene" uid="uid://dh1oj1w5wx4je" path="res://game/controllers/player_controller.tscn" id="3_4mjo1"] - -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dj8f1"] -size = Vector2(48, 32) +[ext_resource type="Texture2D" uid="uid://y2yfli24n51v" path="res://images/ships/player.png" id="3_uf2n1"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dj8f1"] radius = 15.0 @@ -19,10 +17,10 @@ acceleration = 92 deceleration = 46 max_speed = 92 mass = 250 -weapon_positions = Array[Vector2]([Vector2(0, 8), Vector2(0, -8)]) +weapon_positions = Array[Vector2]([Vector2(-2, 18), Vector2(-2, -18)]) [node name="Sprite2D" parent="." index="0"] -texture = SubResource("PlaceholderTexture2D_dj8f1") +texture = ExtResource("3_uf2n1") [node name="CollisionShape2D" parent="." index="1"] rotation = 1.5707964 diff --git a/game/entities/weapons/cannon/cannon_weapon.gd b/game/entities/weapons/cannon/cannon_weapon.gd index ced44b1..97a4543 100644 --- a/game/entities/weapons/cannon/cannon_weapon.gd +++ b/game/entities/weapons/cannon/cannon_weapon.gd @@ -7,57 +7,15 @@ extends AbstractWeapon @onready var right_particles : GPUParticles2D = $ShotParticles/Right @onready var shell_particles : GPUParticles2D = $ShellParticles @onready var cooldown_timer : Timer = $CooldownTimer +@onready var muzzle : Node2D = $Muzzle func set_belonging(belonging: Belonging) -> void: super.set_belonging(belonging) - _init_particles() - sprite.play(PREFIXES[_belonging] + IDLE_POSTFIX) -func _init_particles() -> void: - const FRONT_OFFSET_X = 12 - const SIDE_OFFSET_X = 6 - const SIDE_OFFSET_Y = 5 - const SHELL_OFFSET_X = -10 - const SHELL_OFFSET_Y = 2 - - - match _belonging: - Belonging.PLAYER: - front_particles.process_material.emission_shape_offset.x = FRONT_OFFSET_X - front_particles.process_material.direction = Vector3.RIGHT - - left_particles.process_material.emission_shape_offset.x = SIDE_OFFSET_X - left_particles.process_material.emission_shape_offset.y = -SIDE_OFFSET_Y - left_particles.process_material.direction = Vector3.DOWN + Vector3.LEFT - - right_particles.process_material.emission_shape_offset.x = SIDE_OFFSET_X - right_particles.process_material.emission_shape_offset.y = SIDE_OFFSET_Y - right_particles.process_material.direction = Vector3.UP + Vector3.LEFT - - shell_particles.process_material.emission_shape_offset.x = SHELL_OFFSET_X - shell_particles.process_material.emission_shape_offset.y = SHELL_OFFSET_Y - shell_particles.process_material.direction = Vector3.UP - Belonging.ENEMY: - front_particles.process_material.emission_shape_offset.x = -FRONT_OFFSET_X - front_particles.process_material.direction = Vector3.LEFT - - left_particles.process_material.emission_shape_offset.x = -SIDE_OFFSET_X - left_particles.process_material.emission_shape_offset.y = -SIDE_OFFSET_Y - left_particles.process_material.direction = Vector3.DOWN + Vector3.RIGHT - - right_particles.process_material.emission_shape_offset.x = -SIDE_OFFSET_X - right_particles.process_material.emission_shape_offset.y = SIDE_OFFSET_Y - right_particles.process_material.direction = Vector3.UP + Vector3.RIGHT - - shell_particles.process_material.emission_shape_offset.x = -SHELL_OFFSET_X - shell_particles.process_material.emission_shape_offset.y = -SHELL_OFFSET_Y - shell_particles.process_material.direction = Vector3.DOWN - - func shoot(ship_velocity: Vector2) -> bool: var is_shot := super.shoot(ship_velocity) if is_shot: @@ -69,6 +27,10 @@ func shoot(ship_velocity: Vector2) -> bool: return is_shot +func _get_projectile_position() -> Vector2: + return muzzle.position + + func _restart_particles() -> void: front_particles.restart() left_particles.restart() diff --git a/game/entities/weapons/cannon/cannon_weapon.tscn b/game/entities/weapons/cannon/cannon_weapon.tscn index 84c45cc..772b4cd 100644 --- a/game/entities/weapons/cannon/cannon_weapon.tscn +++ b/game/entities/weapons/cannon/cannon_weapon.tscn @@ -29,6 +29,7 @@ emission_sphere_radius = 2.0 angle_min = -179.99998 angle_max = 180.00002 inherit_velocity_ratio = 0.2 +direction = Vector3(-1, -1, 0) spread = 5.0 initial_velocity_min = 10.0 initial_velocity_max = 20.0 @@ -43,6 +44,7 @@ emission_sphere_radius = 2.0 angle_min = -179.99998 angle_max = 180.00002 inherit_velocity_ratio = 0.2 +direction = Vector3(-1, 1, 0) spread = 5.0 initial_velocity_min = 10.0 initial_velocity_max = 20.0 @@ -146,6 +148,7 @@ resource_local_to_scene = true lifetime_randomness = 0.5 particle_flag_disable_z = true inherit_velocity_ratio = 1.0 +direction = Vector3(0, 1, 0) spread = 15.0 initial_velocity_min = 5.0 initial_velocity_max = 15.0 @@ -160,6 +163,7 @@ type = 2 [node name="ShotParticles" type="Node2D" parent="." index="0"] [node name="Front" type="GPUParticles2D" parent="ShotParticles" index="0"] +position = Vector2(22, 0) emitting = false amount = 32 texture = ExtResource("4_i0ica") @@ -170,6 +174,7 @@ fixed_fps = 10 process_material = SubResource("ParticleProcessMaterial_377p4") [node name="Left" type="GPUParticles2D" parent="ShotParticles" index="1"] +position = Vector2(17, -4) emitting = false texture = ExtResource("5_377p4") lifetime = 0.4 @@ -178,6 +183,7 @@ fixed_fps = 10 process_material = SubResource("ParticleProcessMaterial_i0ica") [node name="Right" type="GPUParticles2D" parent="ShotParticles" index="2"] +position = Vector2(17, 4) emitting = false texture = ExtResource("5_377p4") lifetime = 0.4 @@ -186,11 +192,13 @@ fixed_fps = 10 process_material = SubResource("ParticleProcessMaterial_jfd4t") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="1"] +position = Vector2(9, 0) sprite_frames = SubResource("SpriteFrames_kdf62") animation = &"player_idle" [node name="ShellParticles" type="GPUParticles2D" parent="." index="2"] z_index = 1 +position = Vector2(-1, 1) emitting = false amount = 1 texture = ExtResource("6_i0ica") @@ -203,5 +211,8 @@ process_material = SubResource("ParticleProcessMaterial_nrbut") wait_time = 1.2 one_shot = true +[node name="Muzzle" type="Node2D" parent="." index="4"] +position = Vector2(20, 0) + [connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_finished"] [connection signal="timeout" from="CooldownTimer" to="." method="_on_cooldown_timer_timeout"] diff --git a/game/entities/weapons/gatling/gatling_weapon.gd b/game/entities/weapons/gatling/gatling_weapon.gd index 4ae15da..2eed6a7 100644 --- a/game/entities/weapons/gatling/gatling_weapon.gd +++ b/game/entities/weapons/gatling/gatling_weapon.gd @@ -4,10 +4,19 @@ extends AbstractWeapon @export var reloader : GatlingReloader +@onready var sprite : AnimatedSprite2D = $AnimatedSprite2D + + func _physics_process(delta: float) -> void: reloader.process(delta) +func set_belonging(belonging: Belonging) -> void: + super.set_belonging(belonging) + + sprite.play(PREFIXES[_belonging] + IDLE_POSTFIX) + + func shoot(ship_velocity: Vector2) -> bool: _can_shoot = reloader.can_shoot() var is_shot := super.shoot(ship_velocity) diff --git a/game/entities/weapons/gatling/gatling_weapon.tscn b/game/entities/weapons/gatling/gatling_weapon.tscn index 0ece409..43ff54a 100644 --- a/game/entities/weapons/gatling/gatling_weapon.tscn +++ b/game/entities/weapons/gatling/gatling_weapon.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=7 format=3 uid="uid://c4mlppn5i55bp"] +[gd_scene load_steps=10 format=3 uid="uid://c4mlppn5i55bp"] [ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_gblx7"] [ext_resource type="Script" uid="uid://c1bsvmj7xhnxe" path="res://game/entities/weapons/gatling/gatling_weapon.gd" id="1_kg6du"] [ext_resource type="PackedScene" uid="uid://yfvluap3uy1r" path="res://game/entities/weapons/gatling/gatling_projectile.tscn" id="2_ylc0n"] [ext_resource type="Script" uid="uid://oslebeau3f4b" path="res://game/entities/weapons/gatling/gatling_reloader.gd" id="4_g81jq"] +[ext_resource type="Texture2D" uid="uid://6hh66k8s4a1e" path="res://images/weapons.png" id="5_ydc6p"] [sub_resource type="Resource" id="Resource_oppha"] script = ExtResource("4_g81jq") @@ -11,8 +12,32 @@ firerate = 600 spin_out_time = 3 metadata/_custom_type_script = "uid://oslebeau3f4b" -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dra6h"] -size = Vector2(10, 7) +[sub_resource type="AtlasTexture" id="AtlasTexture_ydc6p"] +atlas = ExtResource("5_ydc6p") +region = Rect2(160, 176, 32, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v064d"] +atlas = ExtResource("5_ydc6p") +region = Rect2(160, 160, 32, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_pjn33"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_ydc6p") +}], +"loop": true, +"name": &"enemy_idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_v064d") +}], +"loop": true, +"name": &"player_idle", +"speed": 10.0 +}] [node name="GatlingWeapon" instance=ExtResource("1_gblx7")] script = ExtResource("1_kg6du") @@ -20,5 +45,7 @@ reloader = SubResource("Resource_oppha") sector_angle = 5 Projectile = ExtResource("2_ylc0n") -[node name="Sprite2D" type="Sprite2D" parent="." index="0"] -texture = SubResource("PlaceholderTexture2D_dra6h") +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0"] +position = Vector2(6, 0) +sprite_frames = SubResource("SpriteFrames_pjn33") +animation = &"player_idle" diff --git a/game/entities/weapons/laser/laser_weapon.tscn b/game/entities/weapons/laser/laser_weapon.tscn index 324eb5a..79a282e 100644 --- a/game/entities/weapons/laser/laser_weapon.tscn +++ b/game/entities/weapons/laser/laser_weapon.tscn @@ -1,13 +1,10 @@ -[gd_scene load_steps=24 format=3 uid="uid://def1alrel4ioo"] +[gd_scene load_steps=23 format=3 uid="uid://def1alrel4ioo"] [ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_pki4x"] [ext_resource type="PackedScene" uid="uid://cmni0xrbbfcy5" path="res://game/entities/weapons/laser/laser_projectile.tscn" id="2_fecho"] [ext_resource type="Script" uid="uid://bxr150at8ul2a" path="res://game/entities/weapons/laser/laser_weapon.gd" id="2_lbdvb"] [ext_resource type="Texture2D" uid="uid://6hh66k8s4a1e" path="res://images/weapons.png" id="6_c8tb4"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dra6h"] -size = Vector2(10, 7) - [sub_resource type="AtlasTexture" id="AtlasTexture_4a3il"] atlas = ExtResource("6_c8tb4") region = Rect2(0, 80, 32, 16) @@ -152,18 +149,17 @@ bullet_per_shot = 2 Projectile = ExtResource("2_fecho") type = 2 -[node name="Sprite2D" type="Sprite2D" parent="." index="0"] -texture = SubResource("PlaceholderTexture2D_dra6h") - -[node name="IdleAnimatedSprite" type="AnimatedSprite2D" parent="." index="1"] +[node name="IdleAnimatedSprite" type="AnimatedSprite2D" parent="." index="0"] +position = Vector2(3, 0) sprite_frames = SubResource("SpriteFrames_qjjka") animation = &"player" -[node name="FiringAnimatedSprite" type="AnimatedSprite2D" parent="." index="2"] +[node name="FiringAnimatedSprite" type="AnimatedSprite2D" parent="." index="1"] +position = Vector2(3, 0) sprite_frames = SubResource("SpriteFrames_c8tb4") animation = &"player" -[node name="CooldownTimer" type="Timer" parent="." index="3"] +[node name="CooldownTimer" type="Timer" parent="." index="2"] process_callback = 0 wait_time = 0.05 one_shot = true diff --git a/game/entities/weapons/launcher/launcher_weapon.gd b/game/entities/weapons/launcher/launcher_weapon.gd index 2ec7a5f..e63da64 100644 --- a/game/entities/weapons/launcher/launcher_weapon.gd +++ b/game/entities/weapons/launcher/launcher_weapon.gd @@ -5,21 +5,15 @@ extends AbstractWeapon @onready var enemy_sprite : Sprite2D = $EnemySprite @onready var cooldown_timer : Timer = $CooldownTimer -@onready var player_particles : Array[GPUParticles2D] = [ - $ShotProjectiles/PlayerRightParticles, $ShotProjectiles/PlayerLeftParticles, -] -@onready var enemy_particles : Array[GPUParticles2D] = [ - $ShotProjectiles/EnemyRightParticles, $ShotProjectiles/EnemyLeftParticles, +@onready var particles : Array[GPUParticles2D] = [ + $RightParticles, $LeftParticles, ] var _particles_index := 0 -const PLAYER_PROJECTILE_POSITIONS : Array[Vector2] = [ - Vector2(4, 3), Vector2(4, -3), +@onready var muzzles : Array[Node2D] = [ + $RightMuzzle, $LeftMuzzle, ] -const ENEMY_PROJECTILE_POSITIONS : Array[Vector2] = [ - Vector2(-4, 3), Vector2(-4, -3), -] -var _projectile_position_index := 0 +var _muzzle_index := 0 func set_belonging(belonging: Belonging) -> void: @@ -47,43 +41,27 @@ func shoot(ship_velocity: Vector2) -> bool: func _restart_particles() -> void: var particle : GPUParticles2D = null - match _belonging: - Belonging.PLAYER: - particle = _get_particle_from_array(player_particles) - Belonging.ENEMY: - particle = _get_particle_from_array(enemy_particles) + particle = _get_particle() if particle != null: particle.restart() func _get_projectile_position() -> Vector2: - var projectile_position : Vector2 - - match _belonging: - Belonging.PLAYER: - projectile_position = _get_projectile_position_from_array(PLAYER_PROJECTILE_POSITIONS) - Belonging.ENEMY: - projectile_position = _get_projectile_position_from_array(ENEMY_PROJECTILE_POSITIONS) - + var projectile_position := muzzles[_muzzle_index].position + _muzzle_index += 1 + if _muzzle_index >= muzzles.size(): + _muzzle_index = 0 return projectile_position -func _get_particle_from_array(array: Array[GPUParticles2D]) -> GPUParticles2D: - var particle := array[_particles_index] +func _get_particle() -> GPUParticles2D: + var particle := particles[_particles_index] _particles_index += 1 - if _particles_index >= array.size(): + if _particles_index >= particles.size(): _particles_index = 0 return particle -func _get_projectile_position_from_array(array: Array[Vector2]) -> Vector2: - var projectile_position := array[_projectile_position_index] - _projectile_position_index += 1 - if _projectile_position_index >= array.size(): - _projectile_position_index = 0 - return projectile_position - - func _on_cooldown_timer_timeout() -> void: _can_shoot = true diff --git a/game/entities/weapons/launcher/launcher_weapon.tscn b/game/entities/weapons/launcher/launcher_weapon.tscn index be9e7d4..1dac21a 100644 --- a/game/entities/weapons/launcher/launcher_weapon.tscn +++ b/game/entities/weapons/launcher/launcher_weapon.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=3 uid="uid://c3l866fdqt7pf"] +[gd_scene load_steps=10 format=3 uid="uid://c3l866fdqt7pf"] [ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_sk5u1"] [ext_resource type="Script" uid="uid://lauvvj5xhbud" path="res://game/entities/weapons/launcher/launcher_weapon.gd" id="2_mxjpe"] @@ -9,7 +9,6 @@ [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_u8eh0"] lifetime_randomness = 0.5 particle_flag_disable_z = true -emission_shape_offset = Vector3(-8, -3.5, 0) emission_shape = 1 emission_sphere_radius = 1.0 angle_min = -179.99998 @@ -24,7 +23,6 @@ gravity = Vector3(0, 0, 0) [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0brql"] lifetime_randomness = 0.5 particle_flag_disable_z = true -emission_shape_offset = Vector3(-8, 3.5, 0) emission_shape = 1 emission_sphere_radius = 1.0 angle_min = -179.99998 @@ -36,34 +34,6 @@ initial_velocity_min = 30.0 initial_velocity_max = 50.0 gravity = Vector3(0, 0, 0) -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3cw5x"] -lifetime_randomness = 0.5 -particle_flag_disable_z = true -emission_shape_offset = Vector3(8, -3.5, 0) -emission_shape = 1 -emission_sphere_radius = 1.0 -angle_min = -179.99998 -angle_max = 180.00002 -inherit_velocity_ratio = 0.5 -spread = 15.0 -initial_velocity_min = 30.0 -initial_velocity_max = 50.0 -gravity = Vector3(0, 0, 0) - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ylgjm"] -lifetime_randomness = 0.5 -particle_flag_disable_z = true -emission_shape_offset = Vector3(8, 3.5, 0) -emission_shape = 1 -emission_sphere_radius = 1.0 -angle_min = -179.99998 -angle_max = 180.00002 -inherit_velocity_ratio = 0.5 -spread = 15.0 -initial_velocity_min = 30.0 -initial_velocity_max = 50.0 -gravity = Vector3(0, 0, 0) - [sub_resource type="AtlasTexture" id="AtlasTexture_u8eh0"] atlas = ExtResource("6_3cw5x") region = Rect2(224, 128, 32, 16) @@ -78,9 +48,8 @@ sector_angle = 5 Projectile = ExtResource("3_fsoo2") type = 3 -[node name="ShotProjectiles" type="Node2D" parent="." index="0"] - -[node name="PlayerLeftParticles" type="GPUParticles2D" parent="ShotProjectiles" index="0"] +[node name="LeftParticles" type="GPUParticles2D" parent="." index="0"] +position = Vector2(-4, -3) emitting = false amount = 16 texture = ExtResource("4_0brql") @@ -88,7 +57,8 @@ lifetime = 0.3 one_shot = true process_material = SubResource("ParticleProcessMaterial_u8eh0") -[node name="PlayerRightParticles" type="GPUParticles2D" parent="ShotProjectiles" index="1"] +[node name="RightParticles" type="GPUParticles2D" parent="." index="1"] +position = Vector2(-4, 3) emitting = false amount = 16 texture = ExtResource("4_0brql") @@ -96,30 +66,22 @@ lifetime = 0.3 one_shot = true process_material = SubResource("ParticleProcessMaterial_0brql") -[node name="EnemyLeftParticles" type="GPUParticles2D" parent="ShotProjectiles" index="2"] -emitting = false -amount = 16 -texture = ExtResource("4_0brql") -lifetime = 0.3 -one_shot = true -process_material = SubResource("ParticleProcessMaterial_3cw5x") - -[node name="EnemyRightParticles" type="GPUParticles2D" parent="ShotProjectiles" index="3"] -emitting = false -amount = 16 -texture = ExtResource("4_0brql") -lifetime = 0.3 -one_shot = true -process_material = SubResource("ParticleProcessMaterial_ylgjm") - -[node name="PlayerSprite" type="Sprite2D" parent="." index="1"] +[node name="PlayerSprite" type="Sprite2D" parent="." index="2"] +position = Vector2(4, 0) texture = SubResource("AtlasTexture_u8eh0") -[node name="EnemySprite" type="Sprite2D" parent="." index="2"] +[node name="EnemySprite" type="Sprite2D" parent="." index="3"] +position = Vector2(4, 0) texture = SubResource("AtlasTexture_ylgjm") -[node name="CooldownTimer" type="Timer" parent="." index="3"] +[node name="CooldownTimer" type="Timer" parent="." index="4"] wait_time = 0.5 one_shot = true +[node name="LeftMuzzle" type="Node2D" parent="." index="5"] +position = Vector2(12, -3) + +[node name="RightMuzzle" type="Node2D" parent="." index="6"] +position = Vector2(12, 3) + [connection signal="timeout" from="CooldownTimer" to="." method="_on_cooldown_timer_timeout"] diff --git a/images/ships/player.png b/images/ships/player.png new file mode 100644 index 0000000..35801fd --- /dev/null +++ b/images/ships/player.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef2ca4a04e5b909389f5c77e209f32ef46b6a44bb2e051dc42b0a6fc5c2ba0c +size 512 diff --git a/images/ships/player.png.import b/images/ships/player.png.import new file mode 100644 index 0000000..933364d --- /dev/null +++ b/images/ships/player.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://y2yfli24n51v" +path="res://.godot/imported/player.png-d16bf70f3ec5d02cd5daffcbae57946f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/ships/player.png" +dest_files=["res://.godot/imported/player.png-d16bf70f3ec5d02cd5daffcbae57946f.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 diff --git a/images/weapons.png b/images/weapons.png index 6066165..bb57571 100644 --- a/images/weapons.png +++ b/images/weapons.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e6235e9f49554d6766b15c0919ba90b21df7574019447f5965d8fb7357e9de5 -size 4259 +oid sha256:f242f4866c432885ec09db8d8234ab8e3af5620904f416591a890aeac3cbf505 +size 4225