add weapon switcher; todo: ammo

This commit is contained in:
Michael Campbell 2026-02-19 01:09:36 -05:00
parent 045faf2333
commit 53b8cf6118
5 changed files with 33 additions and 4 deletions

View file

@ -16,6 +16,7 @@ func hit(projectile: PlayerProjectile, _damage: float) -> bool:
if weak_point_hit: if weak_point_hit:
var explosion := preload("res://player/explosion/explosion.tscn").instantiate() var explosion := preload("res://player/explosion/explosion.tscn").instantiate()
explosion.position = parent.position explosion.position = parent.position
explosion.scale = Vector3.ONE * 1.5
parent.add_sibling(explosion) parent.add_sibling(explosion)
var label_vfx := preload("res://utils/label_vfx/label_vfx.tscn").instantiate() var label_vfx := preload("res://utils/label_vfx/label_vfx.tscn").instantiate()

View file

@ -5,7 +5,7 @@ func fire(aim_angle: float) -> void:
var dir := Vector3.RIGHT.rotated(Vector3.UP, aim_angle) var dir := Vector3.RIGHT.rotated(Vector3.UP, aim_angle)
var player_projectile: PlayerProjectile = preload("res://player/projectile/player_projectile.tscn").instantiate() var player_projectile: PlayerProjectile = preload("res://player/projectile/player_projectile.tscn").instantiate()
player_projectile.init(dir) player_projectile.init(dir)
player_projectile.damage = 5 player_projectile.damage = 4
player_projectile.can_hit_weak_points = false player_projectile.can_hit_weak_points = false
player_projectile.global_position = global_position + Vector3.UP * 0.5 player_projectile.global_position = global_position + Vector3.UP * 0.5
get_tree().current_scene.add_child(player_projectile) get_tree().current_scene.add_child(player_projectile)

View file

@ -28,7 +28,13 @@ var state := State.NORMAL
var dash_direction: Vector2 var dash_direction: Vector2
var stamina := 1.0 var stamina := 1.0
@onready var gun: Gun = %Mortar @export var guns: Array[Gun]
var gun_index := 0:
set(v):
gun_index = v % guns.size()
%GunLabel.text = gun.name
var gun: Gun:
get: return guns[gun_index]
func _init() -> void: func _init() -> void:
instance = self instance = self
@ -122,6 +128,9 @@ func _process(delta: float) -> void:
damage_clock -= delta damage_clock -= delta
if Input.is_action_just_pressed("swap_weapons"):
gun_index += 1
func damage(damager: Node3D) -> void: func damage(damager: Node3D) -> void:
if state == State.DASHING: if state == State.DASHING:
damager.queue_free() damager.queue_free()

View file

@ -17,11 +17,12 @@ size = Vector3(2, 0.1, 0.1)
[sub_resource type="SphereMesh" id="SphereMesh_4flbx"] [sub_resource type="SphereMesh" id="SphereMesh_4flbx"]
[node name="Player" type="CharacterBody3D" unique_id=1904432250] [node name="Player" type="CharacterBody3D" unique_id=1904432250 node_paths=PackedStringArray("guns")]
collision_layer = 2 collision_layer = 2
collision_mask = 13 collision_mask = 13
script = ExtResource("1_4flbx") script = ExtResource("1_4flbx")
shake_noise = SubResource("FastNoiseLite_onrkg") shake_noise = SubResource("FastNoiseLite_onrkg")
guns = [NodePath("Guns/BasicGun"), NodePath("Guns/MiniGun"), NodePath("Guns/Mortar")]
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=204505475] [node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=204505475]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
@ -90,6 +91,19 @@ offset_right = 196.0
offset_bottom = -4.0 offset_bottom = -4.0
text = "Stamina" text = "Stamina"
[node name="GunLabel" type="Label" parent="CanvasLayer" unique_id=220052210]
unique_name_in_owner = true
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -23.0
grow_horizontal = 2
grow_vertical = 0
theme_override_font_sizes/font_size = 32
text = "BasicGun"
horizontal_alignment = 2
[node name="Guns" type="Node3D" parent="." unique_id=2018109083] [node name="Guns" type="Node3D" parent="." unique_id=2018109083]
[node name="BasicGun" type="Node3D" parent="Guns" unique_id=1677055720] [node name="BasicGun" type="Node3D" parent="Guns" unique_id=1677055720]
@ -104,4 +118,4 @@ fire_rate = 800.0
[node name="Mortar" type="Node3D" parent="Guns" unique_id=1321220525] [node name="Mortar" type="Node3D" parent="Guns" unique_id=1321220525]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("5_qjkh3") script = ExtResource("5_qjkh3")
fire_rate = 250.0 fire_rate = 160.0

View file

@ -59,6 +59,11 @@ dash={
"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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) "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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
] ]
} }
swap_weapons={
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
[layer_names] [layer_names]