Trying to rework cannon, gatling, launcher
This commit is contained in:
@@ -31,6 +31,7 @@ signal destroyed
|
|||||||
@export_range(0, 250) var max_speed : int = 0
|
@export_range(0, 250) var max_speed : int = 0
|
||||||
@export_range(0, 1000) var mass : 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]
|
@export var weapon_positions: Array[Vector2]
|
||||||
|
|
||||||
|
|
||||||
@@ -41,6 +42,7 @@ func _ready() -> void:
|
|||||||
for pos in weapon_positions:
|
for pos in weapon_positions:
|
||||||
var weapon : AbstractWeapon = WEAPONS.pick_random().instantiate()
|
var weapon : AbstractWeapon = WEAPONS.pick_random().instantiate()
|
||||||
weapon.position = pos
|
weapon.position = pos
|
||||||
|
weapon.rotation = deg_to_rad(weapon_rotation)
|
||||||
add_child(weapon)
|
add_child(weapon)
|
||||||
_weapons.append(weapon)
|
_weapons.append(weapon)
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
collision_layer = 4
|
collision_layer = 4
|
||||||
collision_mask = 2
|
collision_mask = 2
|
||||||
script = ExtResource("2_fwvrd")
|
script = ExtResource("2_fwvrd")
|
||||||
|
weapon_rotation = 180
|
||||||
|
|
||||||
[node name="EnemyController" parent="." index="4" node_paths=PackedStringArray("ship") instance=ExtResource("3_l8c0n")]
|
[node name="EnemyController" parent="." index="4" node_paths=PackedStringArray("ship") instance=ExtResource("3_l8c0n")]
|
||||||
ship = NodePath("..")
|
ship = NodePath("..")
|
||||||
|
|||||||
@@ -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="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="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"]
|
[ext_resource type="PackedScene" uid="uid://dh1oj1w5wx4je" path="res://game/controllers/player_controller.tscn" id="3_4mjo1"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://y2yfli24n51v" path="res://images/ships/player.png" id="3_uf2n1"]
|
||||||
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dj8f1"]
|
|
||||||
size = Vector2(48, 32)
|
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dj8f1"]
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dj8f1"]
|
||||||
radius = 15.0
|
radius = 15.0
|
||||||
@@ -19,10 +17,10 @@ acceleration = 92
|
|||||||
deceleration = 46
|
deceleration = 46
|
||||||
max_speed = 92
|
max_speed = 92
|
||||||
mass = 250
|
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"]
|
[node name="Sprite2D" parent="." index="0"]
|
||||||
texture = SubResource("PlaceholderTexture2D_dj8f1")
|
texture = ExtResource("3_uf2n1")
|
||||||
|
|
||||||
[node name="CollisionShape2D" parent="." index="1"]
|
[node name="CollisionShape2D" parent="." index="1"]
|
||||||
rotation = 1.5707964
|
rotation = 1.5707964
|
||||||
|
|||||||
@@ -7,57 +7,15 @@ extends AbstractWeapon
|
|||||||
@onready var right_particles : GPUParticles2D = $ShotParticles/Right
|
@onready var right_particles : GPUParticles2D = $ShotParticles/Right
|
||||||
@onready var shell_particles : GPUParticles2D = $ShellParticles
|
@onready var shell_particles : GPUParticles2D = $ShellParticles
|
||||||
@onready var cooldown_timer : Timer = $CooldownTimer
|
@onready var cooldown_timer : Timer = $CooldownTimer
|
||||||
|
@onready var muzzle : Node2D = $Muzzle
|
||||||
|
|
||||||
|
|
||||||
func set_belonging(belonging: Belonging) -> void:
|
func set_belonging(belonging: Belonging) -> void:
|
||||||
super.set_belonging(belonging)
|
super.set_belonging(belonging)
|
||||||
|
|
||||||
_init_particles()
|
|
||||||
|
|
||||||
sprite.play(PREFIXES[_belonging] + IDLE_POSTFIX)
|
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:
|
func shoot(ship_velocity: Vector2) -> bool:
|
||||||
var is_shot := super.shoot(ship_velocity)
|
var is_shot := super.shoot(ship_velocity)
|
||||||
if is_shot:
|
if is_shot:
|
||||||
@@ -69,6 +27,10 @@ func shoot(ship_velocity: Vector2) -> bool:
|
|||||||
return is_shot
|
return is_shot
|
||||||
|
|
||||||
|
|
||||||
|
func _get_projectile_position() -> Vector2:
|
||||||
|
return muzzle.position
|
||||||
|
|
||||||
|
|
||||||
func _restart_particles() -> void:
|
func _restart_particles() -> void:
|
||||||
front_particles.restart()
|
front_particles.restart()
|
||||||
left_particles.restart()
|
left_particles.restart()
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ emission_sphere_radius = 2.0
|
|||||||
angle_min = -179.99998
|
angle_min = -179.99998
|
||||||
angle_max = 180.00002
|
angle_max = 180.00002
|
||||||
inherit_velocity_ratio = 0.2
|
inherit_velocity_ratio = 0.2
|
||||||
|
direction = Vector3(-1, -1, 0)
|
||||||
spread = 5.0
|
spread = 5.0
|
||||||
initial_velocity_min = 10.0
|
initial_velocity_min = 10.0
|
||||||
initial_velocity_max = 20.0
|
initial_velocity_max = 20.0
|
||||||
@@ -43,6 +44,7 @@ emission_sphere_radius = 2.0
|
|||||||
angle_min = -179.99998
|
angle_min = -179.99998
|
||||||
angle_max = 180.00002
|
angle_max = 180.00002
|
||||||
inherit_velocity_ratio = 0.2
|
inherit_velocity_ratio = 0.2
|
||||||
|
direction = Vector3(-1, 1, 0)
|
||||||
spread = 5.0
|
spread = 5.0
|
||||||
initial_velocity_min = 10.0
|
initial_velocity_min = 10.0
|
||||||
initial_velocity_max = 20.0
|
initial_velocity_max = 20.0
|
||||||
@@ -146,6 +148,7 @@ resource_local_to_scene = true
|
|||||||
lifetime_randomness = 0.5
|
lifetime_randomness = 0.5
|
||||||
particle_flag_disable_z = true
|
particle_flag_disable_z = true
|
||||||
inherit_velocity_ratio = 1.0
|
inherit_velocity_ratio = 1.0
|
||||||
|
direction = Vector3(0, 1, 0)
|
||||||
spread = 15.0
|
spread = 15.0
|
||||||
initial_velocity_min = 5.0
|
initial_velocity_min = 5.0
|
||||||
initial_velocity_max = 15.0
|
initial_velocity_max = 15.0
|
||||||
@@ -160,6 +163,7 @@ type = 2
|
|||||||
[node name="ShotParticles" type="Node2D" parent="." index="0"]
|
[node name="ShotParticles" type="Node2D" parent="." index="0"]
|
||||||
|
|
||||||
[node name="Front" type="GPUParticles2D" parent="ShotParticles" index="0"]
|
[node name="Front" type="GPUParticles2D" parent="ShotParticles" index="0"]
|
||||||
|
position = Vector2(22, 0)
|
||||||
emitting = false
|
emitting = false
|
||||||
amount = 32
|
amount = 32
|
||||||
texture = ExtResource("4_i0ica")
|
texture = ExtResource("4_i0ica")
|
||||||
@@ -170,6 +174,7 @@ fixed_fps = 10
|
|||||||
process_material = SubResource("ParticleProcessMaterial_377p4")
|
process_material = SubResource("ParticleProcessMaterial_377p4")
|
||||||
|
|
||||||
[node name="Left" type="GPUParticles2D" parent="ShotParticles" index="1"]
|
[node name="Left" type="GPUParticles2D" parent="ShotParticles" index="1"]
|
||||||
|
position = Vector2(17, -4)
|
||||||
emitting = false
|
emitting = false
|
||||||
texture = ExtResource("5_377p4")
|
texture = ExtResource("5_377p4")
|
||||||
lifetime = 0.4
|
lifetime = 0.4
|
||||||
@@ -178,6 +183,7 @@ fixed_fps = 10
|
|||||||
process_material = SubResource("ParticleProcessMaterial_i0ica")
|
process_material = SubResource("ParticleProcessMaterial_i0ica")
|
||||||
|
|
||||||
[node name="Right" type="GPUParticles2D" parent="ShotParticles" index="2"]
|
[node name="Right" type="GPUParticles2D" parent="ShotParticles" index="2"]
|
||||||
|
position = Vector2(17, 4)
|
||||||
emitting = false
|
emitting = false
|
||||||
texture = ExtResource("5_377p4")
|
texture = ExtResource("5_377p4")
|
||||||
lifetime = 0.4
|
lifetime = 0.4
|
||||||
@@ -186,11 +192,13 @@ fixed_fps = 10
|
|||||||
process_material = SubResource("ParticleProcessMaterial_jfd4t")
|
process_material = SubResource("ParticleProcessMaterial_jfd4t")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="1"]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="1"]
|
||||||
|
position = Vector2(9, 0)
|
||||||
sprite_frames = SubResource("SpriteFrames_kdf62")
|
sprite_frames = SubResource("SpriteFrames_kdf62")
|
||||||
animation = &"player_idle"
|
animation = &"player_idle"
|
||||||
|
|
||||||
[node name="ShellParticles" type="GPUParticles2D" parent="." index="2"]
|
[node name="ShellParticles" type="GPUParticles2D" parent="." index="2"]
|
||||||
z_index = 1
|
z_index = 1
|
||||||
|
position = Vector2(-1, 1)
|
||||||
emitting = false
|
emitting = false
|
||||||
amount = 1
|
amount = 1
|
||||||
texture = ExtResource("6_i0ica")
|
texture = ExtResource("6_i0ica")
|
||||||
@@ -203,5 +211,8 @@ process_material = SubResource("ParticleProcessMaterial_nrbut")
|
|||||||
wait_time = 1.2
|
wait_time = 1.2
|
||||||
one_shot = true
|
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="animation_finished" from="AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_finished"]
|
||||||
[connection signal="timeout" from="CooldownTimer" to="." method="_on_cooldown_timer_timeout"]
|
[connection signal="timeout" from="CooldownTimer" to="." method="_on_cooldown_timer_timeout"]
|
||||||
|
|||||||
@@ -4,10 +4,19 @@ extends AbstractWeapon
|
|||||||
@export var reloader : GatlingReloader
|
@export var reloader : GatlingReloader
|
||||||
|
|
||||||
|
|
||||||
|
@onready var sprite : AnimatedSprite2D = $AnimatedSprite2D
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
reloader.process(delta)
|
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:
|
func shoot(ship_velocity: Vector2) -> bool:
|
||||||
_can_shoot = reloader.can_shoot()
|
_can_shoot = reloader.can_shoot()
|
||||||
var is_shot := super.shoot(ship_velocity)
|
var is_shot := super.shoot(ship_velocity)
|
||||||
|
|||||||
@@ -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="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="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="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="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"]
|
[sub_resource type="Resource" id="Resource_oppha"]
|
||||||
script = ExtResource("4_g81jq")
|
script = ExtResource("4_g81jq")
|
||||||
@@ -11,8 +12,32 @@ firerate = 600
|
|||||||
spin_out_time = 3
|
spin_out_time = 3
|
||||||
metadata/_custom_type_script = "uid://oslebeau3f4b"
|
metadata/_custom_type_script = "uid://oslebeau3f4b"
|
||||||
|
|
||||||
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dra6h"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ydc6p"]
|
||||||
size = Vector2(10, 7)
|
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")]
|
[node name="GatlingWeapon" instance=ExtResource("1_gblx7")]
|
||||||
script = ExtResource("1_kg6du")
|
script = ExtResource("1_kg6du")
|
||||||
@@ -20,5 +45,7 @@ reloader = SubResource("Resource_oppha")
|
|||||||
sector_angle = 5
|
sector_angle = 5
|
||||||
Projectile = ExtResource("2_ylc0n")
|
Projectile = ExtResource("2_ylc0n")
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="." index="0"]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0"]
|
||||||
texture = SubResource("PlaceholderTexture2D_dra6h")
|
position = Vector2(6, 0)
|
||||||
|
sprite_frames = SubResource("SpriteFrames_pjn33")
|
||||||
|
animation = &"player_idle"
|
||||||
|
|||||||
@@ -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://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="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="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"]
|
[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"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_4a3il"]
|
||||||
atlas = ExtResource("6_c8tb4")
|
atlas = ExtResource("6_c8tb4")
|
||||||
region = Rect2(0, 80, 32, 16)
|
region = Rect2(0, 80, 32, 16)
|
||||||
@@ -152,18 +149,17 @@ bullet_per_shot = 2
|
|||||||
Projectile = ExtResource("2_fecho")
|
Projectile = ExtResource("2_fecho")
|
||||||
type = 2
|
type = 2
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="." index="0"]
|
[node name="IdleAnimatedSprite" type="AnimatedSprite2D" parent="." index="0"]
|
||||||
texture = SubResource("PlaceholderTexture2D_dra6h")
|
position = Vector2(3, 0)
|
||||||
|
|
||||||
[node name="IdleAnimatedSprite" type="AnimatedSprite2D" parent="." index="1"]
|
|
||||||
sprite_frames = SubResource("SpriteFrames_qjjka")
|
sprite_frames = SubResource("SpriteFrames_qjjka")
|
||||||
animation = &"player"
|
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")
|
sprite_frames = SubResource("SpriteFrames_c8tb4")
|
||||||
animation = &"player"
|
animation = &"player"
|
||||||
|
|
||||||
[node name="CooldownTimer" type="Timer" parent="." index="3"]
|
[node name="CooldownTimer" type="Timer" parent="." index="2"]
|
||||||
process_callback = 0
|
process_callback = 0
|
||||||
wait_time = 0.05
|
wait_time = 0.05
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|||||||
@@ -5,21 +5,15 @@ extends AbstractWeapon
|
|||||||
@onready var enemy_sprite : Sprite2D = $EnemySprite
|
@onready var enemy_sprite : Sprite2D = $EnemySprite
|
||||||
@onready var cooldown_timer : Timer = $CooldownTimer
|
@onready var cooldown_timer : Timer = $CooldownTimer
|
||||||
|
|
||||||
@onready var player_particles : Array[GPUParticles2D] = [
|
@onready var particles : Array[GPUParticles2D] = [
|
||||||
$ShotProjectiles/PlayerRightParticles, $ShotProjectiles/PlayerLeftParticles,
|
$RightParticles, $LeftParticles,
|
||||||
]
|
|
||||||
@onready var enemy_particles : Array[GPUParticles2D] = [
|
|
||||||
$ShotProjectiles/EnemyRightParticles, $ShotProjectiles/EnemyLeftParticles,
|
|
||||||
]
|
]
|
||||||
var _particles_index := 0
|
var _particles_index := 0
|
||||||
|
|
||||||
const PLAYER_PROJECTILE_POSITIONS : Array[Vector2] = [
|
@onready var muzzles : Array[Node2D] = [
|
||||||
Vector2(4, 3), Vector2(4, -3),
|
$RightMuzzle, $LeftMuzzle,
|
||||||
]
|
]
|
||||||
const ENEMY_PROJECTILE_POSITIONS : Array[Vector2] = [
|
var _muzzle_index := 0
|
||||||
Vector2(-4, 3), Vector2(-4, -3),
|
|
||||||
]
|
|
||||||
var _projectile_position_index := 0
|
|
||||||
|
|
||||||
|
|
||||||
func set_belonging(belonging: Belonging) -> void:
|
func set_belonging(belonging: Belonging) -> void:
|
||||||
@@ -47,43 +41,27 @@ func shoot(ship_velocity: Vector2) -> bool:
|
|||||||
func _restart_particles() -> void:
|
func _restart_particles() -> void:
|
||||||
var particle : GPUParticles2D = null
|
var particle : GPUParticles2D = null
|
||||||
|
|
||||||
match _belonging:
|
particle = _get_particle()
|
||||||
Belonging.PLAYER:
|
|
||||||
particle = _get_particle_from_array(player_particles)
|
|
||||||
Belonging.ENEMY:
|
|
||||||
particle = _get_particle_from_array(enemy_particles)
|
|
||||||
|
|
||||||
if particle != null:
|
if particle != null:
|
||||||
particle.restart()
|
particle.restart()
|
||||||
|
|
||||||
|
|
||||||
func _get_projectile_position() -> Vector2:
|
func _get_projectile_position() -> Vector2:
|
||||||
var projectile_position : Vector2
|
var projectile_position := muzzles[_muzzle_index].position
|
||||||
|
_muzzle_index += 1
|
||||||
match _belonging:
|
if _muzzle_index >= muzzles.size():
|
||||||
Belonging.PLAYER:
|
_muzzle_index = 0
|
||||||
projectile_position = _get_projectile_position_from_array(PLAYER_PROJECTILE_POSITIONS)
|
|
||||||
Belonging.ENEMY:
|
|
||||||
projectile_position = _get_projectile_position_from_array(ENEMY_PROJECTILE_POSITIONS)
|
|
||||||
|
|
||||||
return projectile_position
|
return projectile_position
|
||||||
|
|
||||||
|
|
||||||
func _get_particle_from_array(array: Array[GPUParticles2D]) -> GPUParticles2D:
|
func _get_particle() -> GPUParticles2D:
|
||||||
var particle := array[_particles_index]
|
var particle := particles[_particles_index]
|
||||||
_particles_index += 1
|
_particles_index += 1
|
||||||
if _particles_index >= array.size():
|
if _particles_index >= particles.size():
|
||||||
_particles_index = 0
|
_particles_index = 0
|
||||||
return particle
|
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:
|
func _on_cooldown_timer_timeout() -> void:
|
||||||
_can_shoot = true
|
_can_shoot = true
|
||||||
|
|||||||
@@ -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="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"]
|
[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"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_u8eh0"]
|
||||||
lifetime_randomness = 0.5
|
lifetime_randomness = 0.5
|
||||||
particle_flag_disable_z = true
|
particle_flag_disable_z = true
|
||||||
emission_shape_offset = Vector3(-8, -3.5, 0)
|
|
||||||
emission_shape = 1
|
emission_shape = 1
|
||||||
emission_sphere_radius = 1.0
|
emission_sphere_radius = 1.0
|
||||||
angle_min = -179.99998
|
angle_min = -179.99998
|
||||||
@@ -24,7 +23,6 @@ gravity = Vector3(0, 0, 0)
|
|||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0brql"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0brql"]
|
||||||
lifetime_randomness = 0.5
|
lifetime_randomness = 0.5
|
||||||
particle_flag_disable_z = true
|
particle_flag_disable_z = true
|
||||||
emission_shape_offset = Vector3(-8, 3.5, 0)
|
|
||||||
emission_shape = 1
|
emission_shape = 1
|
||||||
emission_sphere_radius = 1.0
|
emission_sphere_radius = 1.0
|
||||||
angle_min = -179.99998
|
angle_min = -179.99998
|
||||||
@@ -36,34 +34,6 @@ initial_velocity_min = 30.0
|
|||||||
initial_velocity_max = 50.0
|
initial_velocity_max = 50.0
|
||||||
gravity = Vector3(0, 0, 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"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_u8eh0"]
|
||||||
atlas = ExtResource("6_3cw5x")
|
atlas = ExtResource("6_3cw5x")
|
||||||
region = Rect2(224, 128, 32, 16)
|
region = Rect2(224, 128, 32, 16)
|
||||||
@@ -78,9 +48,8 @@ sector_angle = 5
|
|||||||
Projectile = ExtResource("3_fsoo2")
|
Projectile = ExtResource("3_fsoo2")
|
||||||
type = 3
|
type = 3
|
||||||
|
|
||||||
[node name="ShotProjectiles" type="Node2D" parent="." index="0"]
|
[node name="LeftParticles" type="GPUParticles2D" parent="." index="0"]
|
||||||
|
position = Vector2(-4, -3)
|
||||||
[node name="PlayerLeftParticles" type="GPUParticles2D" parent="ShotProjectiles" index="0"]
|
|
||||||
emitting = false
|
emitting = false
|
||||||
amount = 16
|
amount = 16
|
||||||
texture = ExtResource("4_0brql")
|
texture = ExtResource("4_0brql")
|
||||||
@@ -88,7 +57,8 @@ lifetime = 0.3
|
|||||||
one_shot = true
|
one_shot = true
|
||||||
process_material = SubResource("ParticleProcessMaterial_u8eh0")
|
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
|
emitting = false
|
||||||
amount = 16
|
amount = 16
|
||||||
texture = ExtResource("4_0brql")
|
texture = ExtResource("4_0brql")
|
||||||
@@ -96,30 +66,22 @@ lifetime = 0.3
|
|||||||
one_shot = true
|
one_shot = true
|
||||||
process_material = SubResource("ParticleProcessMaterial_0brql")
|
process_material = SubResource("ParticleProcessMaterial_0brql")
|
||||||
|
|
||||||
[node name="EnemyLeftParticles" type="GPUParticles2D" parent="ShotProjectiles" index="2"]
|
[node name="PlayerSprite" type="Sprite2D" parent="." index="2"]
|
||||||
emitting = false
|
position = Vector2(4, 0)
|
||||||
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"]
|
|
||||||
texture = SubResource("AtlasTexture_u8eh0")
|
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")
|
texture = SubResource("AtlasTexture_ylgjm")
|
||||||
|
|
||||||
[node name="CooldownTimer" type="Timer" parent="." index="3"]
|
[node name="CooldownTimer" type="Timer" parent="." index="4"]
|
||||||
wait_time = 0.5
|
wait_time = 0.5
|
||||||
one_shot = true
|
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"]
|
[connection signal="timeout" from="CooldownTimer" to="." method="_on_cooldown_timer_timeout"]
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -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
|
||||||
BIN
Binary file not shown.
Reference in New Issue
Block a user