Added fire mode select on gun script
This commit is contained in:
@@ -3,8 +3,11 @@ extends Node3D
|
||||
var start_position
|
||||
var start_rotation
|
||||
var random_spread_start
|
||||
var cycle_count_start
|
||||
var cycle_count
|
||||
|
||||
@export_group("Gun Feel")
|
||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
||||
@export var recoil_amount = .2
|
||||
@export var max_ammo = 15
|
||||
@export var start_mags = 3
|
||||
@@ -13,6 +16,7 @@ var random_spread_start
|
||||
@export var bullet_speed = 150
|
||||
@export var bullet_drop = .3
|
||||
@export var random_spread_amt = 1.0
|
||||
@export var fire_pitch_scale_amt = .2
|
||||
@export_group("Gun Assets")
|
||||
@export_subgroup("Main Assets")
|
||||
@export var flare_light : Node
|
||||
@@ -38,6 +42,16 @@ func _ready():
|
||||
start_position = self.position
|
||||
start_rotation = self.rotation
|
||||
random_spread_start = random_spread_amt
|
||||
|
||||
if fire_mode == 0:
|
||||
cycle_count = 1
|
||||
cycle_count_start = 1
|
||||
elif fire_mode == 1:
|
||||
cycle_count = 1
|
||||
cycle_count_start = 1
|
||||
elif fire_mode == 2:
|
||||
cycle_count = 3
|
||||
cycle_count_start = 3
|
||||
|
||||
|
||||
|
||||
@@ -58,18 +72,18 @@ func _on_gun_anims_animation_finished(anim_name):
|
||||
player.reloading = false
|
||||
|
||||
func shoot(player,delta):
|
||||
if player.ammo > 0:
|
||||
|
||||
if player.ammo > 0 and cycle_count > 0:
|
||||
if !anim_player.is_playing():
|
||||
player.ammo -= 1
|
||||
#RECOIL --- fix later to happen over a period of time
|
||||
player.camera.rotation.x = clamp(lerp(player.camera.rotation.x, player.camera.rotation.x + recoil_amount, delta * 10), deg_to_rad(-90), deg_to_rad(60))
|
||||
#(ADD PLAYER KICK HERE. RELATIVE TO GUN POSITION)
|
||||
audio_fire.pitch_scale = 1 + rng.randf_range(-.2,.2)
|
||||
audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
|
||||
audio_fire.play()
|
||||
anim_player.play("shoot")
|
||||
|
||||
# shoot real bullet from camera
|
||||
|
||||
# instance bullet
|
||||
var instance_bullet = bullet.instantiate()
|
||||
instance_bullet.position = player.bullet_ray.global_position
|
||||
#shoot bullet from real gun if gun is folded up
|
||||
@@ -88,8 +102,11 @@ func shoot(player,delta):
|
||||
instance_casing.position = casing_ejector.global_position
|
||||
instance_casing.transform.basis = casing_ejector.global_transform.basis
|
||||
get_tree().get_root().add_child(instance_casing)
|
||||
|
||||
if fire_mode == 1 or fire_mode == 2:
|
||||
cycle_count -= 1
|
||||
|
||||
elif !anim_player.is_playing():
|
||||
elif !anim_player.is_playing() and cycle_count != 0:
|
||||
anim_player.play("empty")
|
||||
audio_empty.play()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user