fixed revolver with new weapon script
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1356,7 +1356,7 @@ _data = {
|
|||||||
"swap_out": SubResource("Animation_nvmxj")
|
"swap_out": SubResource("Animation_nvmxj")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "chamber")]
|
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "bullet_array", "chamber")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
||||||
script = ExtResource("2_boy4r")
|
script = ExtResource("2_boy4r")
|
||||||
weapon_info = ExtResource("3_oxh61")
|
weapon_info = ExtResource("3_oxh61")
|
||||||
@@ -1366,6 +1366,7 @@ audio_fire = NodePath("Audio/Fire")
|
|||||||
audio_empty = NodePath("Audio/Empty")
|
audio_empty = NodePath("Audio/Empty")
|
||||||
audio_reload = NodePath("Audio/Reload")
|
audio_reload = NodePath("Audio/Reload")
|
||||||
casing_array = [NodePath("revolver1/Chamber/RayCastCasing1"), NodePath("revolver1/Chamber/RayCastCasing2"), NodePath("revolver1/Chamber/RayCastCasing3"), NodePath("revolver1/Chamber/RayCastCasing4"), NodePath("revolver1/Chamber/RayCastCasing5"), NodePath("revolver1/Chamber/RayCastCasing6")]
|
casing_array = [NodePath("revolver1/Chamber/RayCastCasing1"), NodePath("revolver1/Chamber/RayCastCasing2"), NodePath("revolver1/Chamber/RayCastCasing3"), NodePath("revolver1/Chamber/RayCastCasing4"), NodePath("revolver1/Chamber/RayCastCasing5"), NodePath("revolver1/Chamber/RayCastCasing6")]
|
||||||
|
bullet_array = [NodePath("revolver1/Chamber/bullet"), NodePath("revolver1/Chamber/bullet_001"), NodePath("revolver1/Chamber/bullet_002"), NodePath("revolver1/Chamber/bullet_003"), NodePath("revolver1/Chamber/bullet_004"), NodePath("revolver1/Chamber/bullet_005")]
|
||||||
chamber = NodePath("revolver1/Chamber")
|
chamber = NodePath("revolver1/Chamber")
|
||||||
|
|
||||||
[node name="revolver1" type="MeshInstance3D" parent="."]
|
[node name="revolver1" type="MeshInstance3D" parent="."]
|
||||||
@@ -1478,13 +1479,14 @@ mesh = SubResource("ArrayMesh_0w43n")
|
|||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|
||||||
[node name="Trigger" type="MeshInstance3D" parent="revolver1"]
|
[node name="Trigger" type="MeshInstance3D" parent="revolver1"]
|
||||||
transform = Transform3D(-0.86282, -0.50551, 1.82994e-06, 0, -3.61999e-06, -1, 0.50551, -0.86282, 3.1234e-06, 0.226752, 0, -0.00209358)
|
transform = Transform3D(0.207537, -0.978227, 3.54117e-06, 0, -3.61999e-06, -1, 0.978227, 0.207537, -7.51281e-07, 0.226752, 0, -0.00209358)
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
mesh = SubResource("ArrayMesh_ahftj")
|
mesh = SubResource("ArrayMesh_ahftj")
|
||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|
||||||
[node name="flare" type="MeshInstance3D" parent="revolver1"]
|
[node name="flare" type="MeshInstance3D" parent="revolver1"]
|
||||||
transform = Transform3D(-2.72424e-08, 0.381822, -1.11212e-08, 6.77626e-21, -1.66903e-08, -0.254424, -0.623234, -1.669e-08, 4.86124e-16, -0.109069, 0.0424353, -2.70625)
|
transform = Transform3D(-2.72424e-08, 0.381822, -1.11212e-08, 6.77626e-21, -1.66903e-08, -0.254424, -0.623234, -1.669e-08, 4.86124e-16, -0.109069, 0.0424353, -2.70625)
|
||||||
|
visible = false
|
||||||
transparency = 1.0
|
transparency = 1.0
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
mesh = SubResource("ArrayMesh_t14cq")
|
mesh = SubResource("ArrayMesh_t14cq")
|
||||||
@@ -1504,7 +1506,7 @@ target_position = Vector3(0, 0, -0.1)
|
|||||||
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37115e-08, 0, 0, 0, 1, 0, 0, -1.94881)
|
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37115e-08, 0, 0, 0, 1, 0, 0, -1.94881)
|
||||||
visible = false
|
visible = false
|
||||||
light_color = Color(0.965385, 0.844179, 0.572893, 1)
|
light_color = Color(0.965385, 0.844179, 0.572893, 1)
|
||||||
light_energy = 20.0
|
light_energy = 0.0
|
||||||
light_projector = ExtResource("3_q41fl")
|
light_projector = ExtResource("3_q41fl")
|
||||||
light_size = 0.229
|
light_size = 0.229
|
||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
|
|||||||
@@ -28,3 +28,4 @@ casing = ExtResource("2_7wxcs")
|
|||||||
mag = ExtResource("4_fiujt")
|
mag = ExtResource("4_fiujt")
|
||||||
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
||||||
pellets_per_shot = 20
|
pellets_per_shot = 20
|
||||||
|
blast_power = 50.0
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ gun_name = "revolver"
|
|||||||
gun_icon = ExtResource("2_n6mhi")
|
gun_icon = ExtResource("2_n6mhi")
|
||||||
path = "res://assets/revolver_1.tscn"
|
path = "res://assets/revolver_1.tscn"
|
||||||
weapon_type = 0
|
weapon_type = 0
|
||||||
|
reload_type = 1
|
||||||
bullet = ExtResource("1_53e42")
|
bullet = ExtResource("1_53e42")
|
||||||
fire_mode = 1
|
fire_mode = 1
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
@@ -18,7 +19,7 @@ ads = false
|
|||||||
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||||
kick_amount = 0.1
|
kick_amount = 0.1
|
||||||
max_ammo = 6
|
max_ammo = 6
|
||||||
start_mags = 3
|
start_mags = 30
|
||||||
bullet_damage = 1
|
bullet_damage = 1
|
||||||
smoke_enabled = false
|
smoke_enabled = false
|
||||||
bullet_force_mod = 5.0
|
bullet_force_mod = 5.0
|
||||||
@@ -26,3 +27,4 @@ bullet_speed = 1200
|
|||||||
casing = ExtResource("2_ylruw")
|
casing = ExtResource("2_ylruw")
|
||||||
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
||||||
pellets_per_shot = 20
|
pellets_per_shot = 20
|
||||||
|
blast_power = 50.0
|
||||||
|
|||||||
@@ -148,8 +148,6 @@ func gun_spawn(index):
|
|||||||
instance_gun.global_transform.origin = player.weapon_spawner.position
|
instance_gun.global_transform.origin = player.weapon_spawner.position
|
||||||
player.gun = instance_gun
|
player.gun = instance_gun
|
||||||
player.def_weapon_holder_pos = player.weapon_holder.position
|
player.def_weapon_holder_pos = player.weapon_holder.position
|
||||||
|
|
||||||
instance_gun.gun_index = index
|
|
||||||
instance_gun.anim_player.play("swap_in")
|
instance_gun.anim_player.play("swap_in")
|
||||||
player.weapon_holder.add_child(instance_gun)
|
player.weapon_holder.add_child(instance_gun)
|
||||||
|
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ func _physics_process(delta):
|
|||||||
# Shooting & fire modes
|
# Shooting & fire modes
|
||||||
if Input.is_action_pressed("shoot"):
|
if Input.is_action_pressed("shoot"):
|
||||||
if gun != null:
|
if gun != null:
|
||||||
gun.shoot(delta)
|
gun.shoot()
|
||||||
|
|
||||||
if Input.is_action_just_released("shoot"):
|
if Input.is_action_just_released("shoot"):
|
||||||
if gun != null:
|
if gun != null:
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ class_name weapon_resource
|
|||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
@export var gun_icon : Texture2D
|
@export var gun_icon : Texture2D
|
||||||
@export var path : String
|
@export var path : String
|
||||||
@export_enum("Gun","Melee") var weapon_type = 0
|
@export_enum("Projectile","Melee","Tracker") var weapon_type = 0
|
||||||
|
@export_enum("Mag","Revolver","Bolt Action") var reload_type = 0
|
||||||
@export var bullet : bullet_resource
|
@export var bullet : bullet_resource
|
||||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
||||||
@export var fov_zoom_amt = .98
|
@export var fov_zoom_amt = .98
|
||||||
@@ -25,3 +26,5 @@ class_name weapon_resource
|
|||||||
@export var pellets_per_shot : int = 20
|
@export var pellets_per_shot : int = 20
|
||||||
@export_group("Rocket Settings")
|
@export_group("Rocket Settings")
|
||||||
@export var blast_power : float = 50.0
|
@export var blast_power : float = 50.0
|
||||||
|
@export_group("Tracker Settings")
|
||||||
|
@export var tracker_asset : Resource
|
||||||
|
|||||||
@@ -14,9 +14,12 @@ class_name weapon
|
|||||||
@export var smoke_timer : Timer
|
@export var smoke_timer : Timer
|
||||||
@export_group("Revolver")
|
@export_group("Revolver")
|
||||||
@export var casing_array : Array[RayCast3D]
|
@export var casing_array : Array[RayCast3D]
|
||||||
|
@export var bullet_array : Array[MeshInstance3D]
|
||||||
@export var chamber : Node
|
@export var chamber : Node
|
||||||
@export_group("Melee")
|
@export_group("Melee")
|
||||||
@export var melee_collision_shape : Node
|
@export var melee_collision_shape : Node
|
||||||
|
@export_group("Tracker Gun")
|
||||||
|
@export var looking_mesh : Node
|
||||||
|
|
||||||
@onready var player = get_tree().current_scene.player
|
@onready var player = get_tree().current_scene.player
|
||||||
|
|
||||||
@@ -24,30 +27,31 @@ class_name weapon
|
|||||||
var revolver_chamber_rot_amt = 0
|
var revolver_chamber_rot_amt = 0
|
||||||
var casings_chamber_last
|
var casings_chamber_last
|
||||||
|
|
||||||
|
# Tracker vars
|
||||||
|
var tracker
|
||||||
|
var check_track
|
||||||
|
const TRACKER_ASSIGNED_COLOR: Color = Color(0, 0.853, 0, 1)
|
||||||
|
const TRACKER_NULL_COLOR :Color = Color(0.743, 0.359, 0, 1)
|
||||||
|
|
||||||
|
var remaining_ammo
|
||||||
var start_position
|
var start_position
|
||||||
var start_rotation
|
var start_rotation
|
||||||
var cycle_count_start
|
var cycle_count_start
|
||||||
var cycle_count
|
var cycle_count
|
||||||
var rng = RandomNumberGenerator.new()
|
|
||||||
var gun_index
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
|
|
||||||
if weapon_info.weapon_type == 0:
|
if weapon_info.weapon_type != 1:
|
||||||
casings_chamber_last = weapon_info.max_ammo
|
casings_chamber_last = weapon_info.max_ammo
|
||||||
|
|
||||||
if weapon_info.fire_mode == 0:
|
if weapon_info.fire_mode == 0:
|
||||||
cycle_count = 1
|
|
||||||
cycle_count_start = 1
|
cycle_count_start = 1
|
||||||
elif weapon_info.fire_mode == 1:
|
elif weapon_info.fire_mode == 1:
|
||||||
cycle_count = 1
|
|
||||||
cycle_count_start = 1
|
cycle_count_start = 1
|
||||||
elif weapon_info.fire_mode == 2:
|
elif weapon_info.fire_mode == 2:
|
||||||
cycle_count = 3
|
|
||||||
cycle_count_start = 3
|
cycle_count_start = 3
|
||||||
|
cycle_count = cycle_count_start
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
@@ -56,8 +60,20 @@ func _process(_delta):
|
|||||||
chamber.rotate_object_local(Vector3(0,-1,0),deg_to_rad(rot_amount))
|
chamber.rotate_object_local(Vector3(0,-1,0),deg_to_rad(rot_amount))
|
||||||
revolver_chamber_rot_amt -= rot_amount
|
revolver_chamber_rot_amt -= rot_amount
|
||||||
|
|
||||||
|
if weapon_info.weapon_type == 2:
|
||||||
|
if tracker != null:
|
||||||
|
weapon_info.tracker_asset.tracker_indicator_material.emission = TRACKER_ASSIGNED_COLOR
|
||||||
|
if looking_mesh != null:
|
||||||
|
looking_mesh.look_at(tracker.global_position)
|
||||||
|
else:
|
||||||
|
weapon_info.tracker_asset.tracker_indicator_material.emission = TRACKER_NULL_COLOR
|
||||||
|
looking_mesh.rotation = lerp(rotation, Vector3(0,0,0), _delta * 4)
|
||||||
|
if check_track:
|
||||||
|
tracker_checker(_delta)
|
||||||
|
|
||||||
func reload_finished():
|
func reload_finished():
|
||||||
|
match weapon_info.reload_type:
|
||||||
|
0:
|
||||||
if GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] >= weapon_info.max_ammo:
|
if GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] >= weapon_info.max_ammo:
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += weapon_info.max_ammo
|
GameGlobals.gun_ammo[weapon_info.gun_name] += weapon_info.max_ammo
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= weapon_info.max_ammo
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= weapon_info.max_ammo
|
||||||
@@ -66,8 +82,33 @@ func reload_finished():
|
|||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
GameGlobals.gun_ammo[weapon_info.gun_name] += GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
casings_chamber_last = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
casings_chamber_last = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
|
1:
|
||||||
|
#if max ammo in reserve fill all the way
|
||||||
|
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
||||||
|
|
||||||
func shoot(delta):
|
if GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] >= weapon_info.max_ammo:
|
||||||
|
GameGlobals.gun_ammo[weapon_info.gun_name] += ammo_needed
|
||||||
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= ammo_needed
|
||||||
|
casings_chamber_last = weapon_info.max_ammo
|
||||||
|
for i in casing_array:
|
||||||
|
i.visible = true
|
||||||
|
for i in bullet_array:
|
||||||
|
i.visible = true
|
||||||
|
player.reloading = false
|
||||||
|
#if not max ammo in reserve add remaining ammo
|
||||||
|
else:
|
||||||
|
GameGlobals.gun_ammo[weapon_info.gun_name] += GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
|
var casings_in_chamber = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
|
casings_chamber_last = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
||||||
|
|
||||||
|
while casings_in_chamber > 0:
|
||||||
|
casing_array[casings_in_chamber].visible = true
|
||||||
|
bullet_array[casings_in_chamber].visible = true
|
||||||
|
casings_in_chamber -= 1
|
||||||
|
await get_tree().create_timer(.01).timeout
|
||||||
|
|
||||||
|
func shoot():
|
||||||
if weapon_info.weapon_type == 0:
|
if weapon_info.weapon_type == 0:
|
||||||
if GameGlobals.gun_ammo[weapon_info.gun_name] > 0 and cycle_count > 0:
|
if GameGlobals.gun_ammo[weapon_info.gun_name] > 0 and cycle_count > 0:
|
||||||
if !anim_player.is_playing():
|
if !anim_player.is_playing():
|
||||||
@@ -88,10 +129,21 @@ func shoot(delta):
|
|||||||
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
||||||
SignalBus.emit_signal("shot_fired")
|
SignalBus.emit_signal("shot_fired")
|
||||||
|
|
||||||
|
elif weapon_info.weapon_type == 2:
|
||||||
|
if !anim_player.is_playing():
|
||||||
|
if tracker == null and Input.is_action_just_pressed("shoot"):
|
||||||
|
check_track = true
|
||||||
|
weapon_info.tracker_check_mesh.visible = true
|
||||||
|
weapon_info.tracker_check_mesh.anim_player.play("check")
|
||||||
|
if tracker != null and !check_track:
|
||||||
|
anim_player.play("shoot")
|
||||||
|
|
||||||
func reload():
|
func reload():
|
||||||
if weapon_info.weapon_type == 0:
|
match weapon_info.weapon_type:
|
||||||
if GameGlobals.gun_ammo[weapon_info.gun_name] < weapon_info.max_ammo and player.gun.anim_player.get_current_animation() != "reload" and GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] > 0:
|
0:
|
||||||
#player.reloading = true
|
match weapon_info.reload_type:
|
||||||
|
0:
|
||||||
|
if GameGlobals.gun_ammo[weapon_info.gun_name] < weapon_info.max_ammo and anim_player.get_current_animation() != "reload" and GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] > 0:
|
||||||
anim_player.play("reload")
|
anim_player.play("reload")
|
||||||
audio_reload.play()
|
audio_reload.play()
|
||||||
if anim_player.is_playing() and anim_player.current_animation == "reload":
|
if anim_player.is_playing() and anim_player.current_animation == "reload":
|
||||||
@@ -99,6 +151,10 @@ func reload():
|
|||||||
GameGlobals.gun_ammo[weapon_info.gun_name] = 0
|
GameGlobals.gun_ammo[weapon_info.gun_name] = 0
|
||||||
else:
|
else:
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] = 1
|
GameGlobals.gun_ammo[weapon_info.gun_name] = 1
|
||||||
|
1:
|
||||||
|
if GameGlobals.gun_ammo[weapon_info.gun_name] < weapon_info.max_ammo and anim_player.get_current_animation() != "reload" and GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] > 0:
|
||||||
|
anim_player.play("reload")
|
||||||
|
audio_reload.play()
|
||||||
|
|
||||||
func spawn_mag():
|
func spawn_mag():
|
||||||
var instance_mag = weapon_info.mag.instantiate()
|
var instance_mag = weapon_info.mag.instantiate()
|
||||||
@@ -119,26 +175,53 @@ func spawn_casing():
|
|||||||
|
|
||||||
func spawn_revolver_casings():
|
func spawn_revolver_casings():
|
||||||
if casing_array.size() > 0:
|
if casing_array.size() > 0:
|
||||||
for i in casing_array:
|
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
||||||
i.visible = false
|
var index = 0
|
||||||
if casings_chamber_last > 0:
|
while index < ammo_needed:
|
||||||
|
bullet_array[index].visible = false
|
||||||
var instance_casing = weapon_info.casing.instantiate()
|
var instance_casing = weapon_info.casing.instantiate()
|
||||||
instance_casing.position = i.global_position
|
instance_casing.position = casing_array[index].global_position
|
||||||
instance_casing.random_rotation = false
|
instance_casing.random_rotation = false
|
||||||
instance_casing.transform.basis = i.global_transform.basis
|
instance_casing.transform.basis = casing_array[index].global_transform.basis
|
||||||
instance_casing.player_velocity = player.velocity * transform.basis
|
instance_casing.player_velocity = player.velocity * transform.basis
|
||||||
instance_casing.rotation.x += deg_to_rad(90)
|
instance_casing.rotation.x += deg_to_rad(90)
|
||||||
instance_casing.linear_velocity.y = -(8 + rng.randf_range(0,3))
|
instance_casing.linear_velocity.y = -(8 + randf_range(0,3))
|
||||||
get_tree().get_root().add_child(instance_casing)
|
get_tree().get_root().add_child(instance_casing)
|
||||||
casings_chamber_last -= 1
|
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
func fire_tracker():
|
||||||
|
var instance_tracker = weapon_info.tracker_asset.instantiate()
|
||||||
|
get_tree().current_scene.add_child(instance_tracker)
|
||||||
|
if player.bullet_ray.is_colliding():
|
||||||
|
var spawn_loc = player.bullet_ray.get_collision_point()
|
||||||
|
var spawn_parent = player.bullet_ray.get_collider()
|
||||||
|
if spawn_parent != null:
|
||||||
|
spawn_parent.add_child(instance_tracker)
|
||||||
|
instance_tracker.global_transform.origin = spawn_loc
|
||||||
|
instance_tracker.anim_player.play("mark")
|
||||||
|
tracker = instance_tracker
|
||||||
|
|
||||||
|
func tracker_checker(_delta):
|
||||||
|
if player.bullet_ray.is_colliding():
|
||||||
|
var tracker_check_mesh = weapon_info.tracker_asset.instantiate()
|
||||||
|
var spawn_loc = player.bullet_ray.get_collision_point()
|
||||||
|
var distance_to_point = self.global_position.distance_to(spawn_loc)
|
||||||
|
var scale_adjusted = distance_to_point/5
|
||||||
|
tracker_check_mesh.global_transform.origin = spawn_loc
|
||||||
|
tracker_check_mesh.global_rotation = Vector3(0,0,0)
|
||||||
|
tracker_check_mesh.scale = Vector3(scale_adjusted,scale_adjusted,scale_adjusted)
|
||||||
|
if check_track == true and Input.is_action_just_released("shoot"):
|
||||||
|
fire_tracker()
|
||||||
|
check_track = false
|
||||||
|
|
||||||
func shotgun_pellet_spawn():
|
func shotgun_pellet_spawn():
|
||||||
audio_fire.play()
|
audio_fire.play()
|
||||||
var pellets_remaining = weapon_info.pellets_per_shot
|
var pellets_remaining = weapon_info.pellets_per_shot
|
||||||
|
|
||||||
while pellets_remaining > 0:
|
while pellets_remaining > 0:
|
||||||
var lv_x = rng.randf_range(-weapon_info.shotgun_spread.x,weapon_info.shotgun_spread.x)
|
var lv_x = randf_range(-weapon_info.shotgun_spread.x,weapon_info.shotgun_spread.x)
|
||||||
var lv_y = rng.randf_range(-weapon_info.shotgun_spread.y,weapon_info.shotgun_spread.y)
|
var lv_y = randf_range(-weapon_info.shotgun_spread.y,weapon_info.shotgun_spread.y)
|
||||||
# instance bullet
|
# instance bullet
|
||||||
var instance_bullet = projectile_initialize()
|
var instance_bullet = projectile_initialize()
|
||||||
instance_bullet.linear_velocity += instance_bullet.transform.basis * Vector3(lv_x, lv_y, -weapon_info.bullet_speed) + player.velocity
|
instance_bullet.linear_velocity += instance_bullet.transform.basis * Vector3(lv_x, lv_y, -weapon_info.bullet_speed) + player.velocity
|
||||||
|
|||||||
Reference in New Issue
Block a user