tweaks and continued gd4.4 upgrading
This commit is contained in:
@@ -1,11 +1,8 @@
|
|||||||
[gd_scene load_steps=24 format=3 uid="uid://dslxb3psx30vp"]
|
[gd_scene load_steps=21 format=3 uid="uid://dslxb3psx30vp"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://svrb3n31mkag" path="res://assets/Models/gun.blend" id="1_frekg"]
|
[ext_resource type="PackedScene" uid="uid://svrb3n31mkag" path="res://assets/Models/gun.blend" id="1_frekg"]
|
||||||
[ext_resource type="Script" uid="uid://c6npw0lul1llg" path="res://scripts/trackerGun.gd" id="2_ieev5"]
|
[ext_resource type="Script" uid="uid://dhr2xfj3qow4c" path="res://scripts/weapon_uberscript.gd" id="2_wrnws"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d2fic5txnwu3u" path="res://assets/Textures/ObjectTextures/Pistol.png" id="3_gkvbi"]
|
[ext_resource type="Resource" uid="uid://dpcoofjsxi10q" path="res://assets/weaponresources/pistol1.tres" id="3_er7xg"]
|
||||||
[ext_resource type="PackedScene" uid="uid://crvohhc6kgshn" path="res://assets/bullet_hole.tscn" id="4_bu1g0"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://c1gdehrsytlkk" path="res://assets/casing.tscn" id="5_gls8p"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cp8563f0oxvff" path="res://assets/mag1.tscn" id="6_ysonb"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://bxjv50ivk3fvn" path="res://assets/Audio/Weapons/9mm Full Size Pistol/Gunshots/9mm Full Size Pistol - Gunshot B 001.wav" id="7_25stk"]
|
[ext_resource type="AudioStream" uid="uid://bxjv50ivk3fvn" path="res://assets/Audio/Weapons/9mm Full Size Pistol/Gunshots/9mm Full Size Pistol - Gunshot B 001.wav" id="7_25stk"]
|
||||||
[ext_resource type="AudioStream" uid="uid://t50i483xmj3a" path="res://assets/Audio/Weapons/toy-click-spin-SBA-300071143.wav" id="9_btm61"]
|
[ext_resource type="AudioStream" uid="uid://t50i483xmj3a" path="res://assets/Audio/Weapons/toy-click-spin-SBA-300071143.wav" id="9_btm61"]
|
||||||
[ext_resource type="AudioStream" uid="uid://db3iy0f1pa5lg" path="res://assets/Audio/Weapons/gun-m-16-reload-full-clip-magazine-SBA-300121257.wav" id="10_xn8pu"]
|
[ext_resource type="AudioStream" uid="uid://db3iy0f1pa5lg" path="res://assets/Audio/Weapons/gun-m-16-reload-full-clip-magazine-SBA-300121257.wav" id="10_xn8pu"]
|
||||||
@@ -339,6 +336,20 @@ tracks/2/keys = {
|
|||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 0, 0), Vector3(0.4, 0, 0), Vector3(0, 0, 0)]
|
"values": [Vector3(0, 0, 0), Vector3(0.4, 0, 0), Vector3(0, 0, 0)]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "method"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"values": [{
|
||||||
|
"args": [],
|
||||||
|
"method": &"bullet_fire"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_tikvk"]
|
[sub_resource type="Animation" id="Animation_tikvk"]
|
||||||
resource_name = "sprint"
|
resource_name = "sprint"
|
||||||
@@ -428,20 +439,12 @@ _data = {
|
|||||||
&"swap_out": SubResource("Animation_lleyf")
|
&"swap_out": SubResource("Animation_lleyf")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Pistol" node_paths=PackedStringArray("tracker_indicator", "flare_light", "anim_player", "barrel_raycast", "casing_ejector", "mag_ejector", "audio_fire", "audio_empty", "audio_reload") instance=ExtResource("1_frekg")]
|
[node name="Pistol" node_paths=PackedStringArray("anim_player", "barrel_ray", "casing_ejector", "mag_ejector", "audio_fire", "audio_empty", "audio_reload") instance=ExtResource("1_frekg")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0145504, -0.0460228)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0145504, -0.0460228)
|
||||||
script = ExtResource("2_ieev5")
|
script = ExtResource("2_wrnws")
|
||||||
gun_name = "Tracker Pistol"
|
weapon_info = ExtResource("3_er7xg")
|
||||||
gun_icon = ExtResource("3_gkvbi")
|
|
||||||
recoil_amount = Vector3(0, 0.05, 0.05)
|
|
||||||
bullet_speed = 50
|
|
||||||
tracker_indicator = NodePath("gun/slide/TrackerIndicator")
|
|
||||||
flare_light = NodePath("SpotLight3D")
|
|
||||||
bullethole = ExtResource("4_bu1g0")
|
|
||||||
casing = ExtResource("5_gls8p")
|
|
||||||
mag = ExtResource("6_ysonb")
|
|
||||||
anim_player = NodePath("AnimationPlayer")
|
anim_player = NodePath("AnimationPlayer")
|
||||||
barrel_raycast = NodePath("gun/RayCastBarrel")
|
barrel_ray = NodePath("gun/RayCastBarrel")
|
||||||
casing_ejector = NodePath("gun/RayCastCasing")
|
casing_ejector = NodePath("gun/RayCastCasing")
|
||||||
mag_ejector = NodePath("gun/RayCastMag")
|
mag_ejector = NodePath("gun/RayCastMag")
|
||||||
audio_fire = NodePath("Audio/Fire")
|
audio_fire = NodePath("Audio/Fire")
|
||||||
@@ -477,7 +480,7 @@ target_position = Vector3(1, 0, 0)
|
|||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"]
|
||||||
libraries = {
|
libraries = {
|
||||||
"": SubResource("AnimationLibrary_vkrtt")
|
&"": SubResource("AnimationLibrary_vkrtt")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Audio" type="Node3D" parent="." index="2"]
|
[node name="Audio" type="Node3D" parent="." index="2"]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -15,7 +15,6 @@ weapon_type = 0
|
|||||||
reload_type = 0
|
reload_type = 0
|
||||||
bullet = ExtResource("1_y4ehq")
|
bullet = ExtResource("1_y4ehq")
|
||||||
fire_mode = 0
|
fire_mode = 0
|
||||||
hitscan_range = 100.0
|
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
ads = false
|
ads = false
|
||||||
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||||
@@ -28,6 +27,11 @@ bullet_force_mod = 5.0
|
|||||||
bullet_speed = 600
|
bullet_speed = 600
|
||||||
casing = ExtResource("2_7wxcs")
|
casing = ExtResource("2_7wxcs")
|
||||||
mag = ExtResource("4_fiujt")
|
mag = ExtResource("4_fiujt")
|
||||||
|
vibration_weak_magnitude = 0.1
|
||||||
|
vibration_strong_magnitude = 0.5
|
||||||
|
vibration_duration = 0.1
|
||||||
|
chamber_rot_amount = 60.0
|
||||||
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
|
blast_power = 50.0
|
||||||
|
hitscan_range = 100.0
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ path = "res://assets/machete.tscn"
|
|||||||
weapon_type = 1
|
weapon_type = 1
|
||||||
reload_type = 0
|
reload_type = 0
|
||||||
fire_mode = 1
|
fire_mode = 1
|
||||||
hitscan_range = 100.0
|
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
ads = false
|
ads = false
|
||||||
recoil_amount = Vector3(0, 0.05, 0.05)
|
recoil_amount = Vector3(0, 0.05, 0.05)
|
||||||
@@ -22,6 +21,11 @@ bullet_damage = 5
|
|||||||
smoke_enabled = false
|
smoke_enabled = false
|
||||||
bullet_force_mod = 5.0
|
bullet_force_mod = 5.0
|
||||||
bullet_speed = 600
|
bullet_speed = 600
|
||||||
|
vibration_weak_magnitude = 0.1
|
||||||
|
vibration_strong_magnitude = 0.5
|
||||||
|
vibration_duration = 0.1
|
||||||
|
chamber_rot_amount = 60.0
|
||||||
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
|
blast_power = 50.0
|
||||||
|
hitscan_range = 100.0
|
||||||
|
|||||||
38
assets/weaponresources/pistol1.tres
Normal file
38
assets/weaponresources/pistol1.tres
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
[gd_resource type="Resource" script_class="weapon_resource" load_steps=6 format=3 uid="uid://dpcoofjsxi10q"]
|
||||||
|
|
||||||
|
[ext_resource type="Resource" uid="uid://covnkagmv8b1x" path="res://assets/weaponresources/light_ammo.tres" id="1_oqs71"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1gdehrsytlkk" path="res://assets/casing.tscn" id="2_g6owq"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d2fic5txnwu3u" path="res://assets/Textures/ObjectTextures/Pistol.png" id="3_fbxkm"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cp8563f0oxvff" path="res://assets/mag1.tscn" id="4_xovdq"]
|
||||||
|
[ext_resource type="Script" uid="uid://d0cf6xsxkf0h" path="res://scripts/weapon_resource.gd" id="5_mkwdh"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("5_mkwdh")
|
||||||
|
gun_name = "pistol 1"
|
||||||
|
gun_icon = ExtResource("3_fbxkm")
|
||||||
|
path = "res://assets/pistol1.tscn"
|
||||||
|
weapon_type = 0
|
||||||
|
reload_type = 0
|
||||||
|
bullet = ExtResource("1_oqs71")
|
||||||
|
fire_mode = 2
|
||||||
|
fov_zoom_amt = 0.98
|
||||||
|
ads = false
|
||||||
|
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||||
|
kick_amount = 0.1
|
||||||
|
max_ammo = 15
|
||||||
|
start_mags = 3
|
||||||
|
bullet_damage = 1
|
||||||
|
smoke_enabled = false
|
||||||
|
bullet_force_mod = 5.0
|
||||||
|
bullet_speed = 600
|
||||||
|
casing = ExtResource("2_g6owq")
|
||||||
|
mag = ExtResource("4_xovdq")
|
||||||
|
vibration_weak_magnitude = 0.1
|
||||||
|
vibration_strong_magnitude = 0.5
|
||||||
|
vibration_duration = 0.1
|
||||||
|
chamber_rot_amount = 60.0
|
||||||
|
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
||||||
|
pellets_per_shot = 20
|
||||||
|
blast_power = 50.0
|
||||||
|
hitscan_range = 100.0
|
||||||
|
metadata/_custom_type_script = "uid://d0cf6xsxkf0h"
|
||||||
@@ -14,7 +14,6 @@ weapon_type = 0
|
|||||||
reload_type = 1
|
reload_type = 1
|
||||||
bullet = ExtResource("1_53e42")
|
bullet = ExtResource("1_53e42")
|
||||||
fire_mode = 1
|
fire_mode = 1
|
||||||
hitscan_range = 100.0
|
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
ads = false
|
ads = false
|
||||||
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||||
@@ -26,6 +25,11 @@ smoke_enabled = false
|
|||||||
bullet_force_mod = 5.0
|
bullet_force_mod = 5.0
|
||||||
bullet_speed = 1200
|
bullet_speed = 1200
|
||||||
casing = ExtResource("2_ylruw")
|
casing = ExtResource("2_ylruw")
|
||||||
|
vibration_weak_magnitude = 0.1
|
||||||
|
vibration_strong_magnitude = 0.5
|
||||||
|
vibration_duration = 0.1
|
||||||
|
chamber_rot_amount = 60.0
|
||||||
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
|
blast_power = 50.0
|
||||||
|
hitscan_range = 100.0
|
||||||
|
|||||||
2118
scenes/HUBWORLD.tscn
2118
scenes/HUBWORLD.tscn
File diff suppressed because one or more lines are too long
@@ -624,10 +624,13 @@ func grab_moveable(body):
|
|||||||
held_item.set_collision_layer_value(1,false)
|
held_item.set_collision_layer_value(1,false)
|
||||||
|
|
||||||
func hud_wobble(delta):
|
func hud_wobble(delta):
|
||||||
const HUD_WOBBLE_MAX : float = 20
|
var viewport_height_adj = (get_viewport().size.y/1080)
|
||||||
const MOUSE_AMT = 10
|
|
||||||
const VELOCITY_AMT = 100
|
var HUD_WOBBLE_MAX : float = 20 * viewport_height_adj
|
||||||
const HUD_SPEED = 10
|
var MOUSE_AMT = 10 * viewport_height_adj
|
||||||
|
var VELOCITY_AMT = 100 * viewport_height_adj
|
||||||
|
var HUD_SPEED = 10 * viewport_height_adj
|
||||||
|
|
||||||
var dir_mouse = Vector2(-mouse_input.x * MOUSE_AMT,-mouse_input.y * MOUSE_AMT)
|
var dir_mouse = Vector2(-mouse_input.x * MOUSE_AMT,-mouse_input.y * MOUSE_AMT)
|
||||||
var velocity_dir_transformed = velocity.normalized() * global_basis
|
var velocity_dir_transformed = velocity.normalized() * global_basis
|
||||||
var velocity_lengh_clamped = clamp(velocity.length(),-VELOCITY_AMT,VELOCITY_AMT)
|
var velocity_lengh_clamped = clamp(velocity.length(),-VELOCITY_AMT,VELOCITY_AMT)
|
||||||
|
|||||||
@@ -1,213 +0,0 @@
|
|||||||
extends Node3D
|
|
||||||
|
|
||||||
|
|
||||||
@export_group("Gun Feel")
|
|
||||||
@export var gun_name : String
|
|
||||||
@export var gun_icon : Texture2D
|
|
||||||
@export_enum("Light", "Medium", "Heavy", "Shotgun", "Rocket") var ammo_type: int
|
|
||||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
|
||||||
@export var hitscan_enabled : bool = false
|
|
||||||
@export var ads : bool = false
|
|
||||||
@export var fov_zoom_amt = .98
|
|
||||||
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
|
|
||||||
@export var kick_amount : float = .1
|
|
||||||
@export var max_ammo = 15
|
|
||||||
@export var start_mags = 3
|
|
||||||
@export var bullet_damage = 1
|
|
||||||
@export var bullet_force_mod = 5.0
|
|
||||||
@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 tracker_indicator : Node
|
|
||||||
@export var flare_light : Node
|
|
||||||
@export var bullet_fake : Resource
|
|
||||||
@export var bullethole : Resource
|
|
||||||
@export var casing : Resource
|
|
||||||
@export var mag : Resource
|
|
||||||
@export_subgroup("Raycast Nodes")
|
|
||||||
@export var anim_player : Node
|
|
||||||
@export var barrel_raycast : Node
|
|
||||||
@export var casing_ejector : Node
|
|
||||||
@export var mag_ejector : Node
|
|
||||||
@export_subgroup("Audio Clips")
|
|
||||||
@export var audio_fire : Node
|
|
||||||
@export var audio_empty : Node
|
|
||||||
@export var audio_reload : Node
|
|
||||||
|
|
||||||
@onready var player = get_tree().current_scene.player
|
|
||||||
@onready var level_control = get_tree().current_scene
|
|
||||||
@onready var tracker_marker = load("res://assets/tracker_marker.tscn")
|
|
||||||
@onready var bullet : Resource = load("res://assets/tracker_bullet.tscn")
|
|
||||||
@onready var tracker_indicator_material = tracker_indicator.get_surface_override_material(0)
|
|
||||||
|
|
||||||
var tracker : Node
|
|
||||||
var tracker_check_mesh
|
|
||||||
var check_track : bool = false
|
|
||||||
var start_position
|
|
||||||
var start_rotation
|
|
||||||
var random_spread_start
|
|
||||||
var cycle_count_start
|
|
||||||
var cycle_count
|
|
||||||
var rng = RandomNumberGenerator.new()
|
|
||||||
var gun_index
|
|
||||||
|
|
||||||
|
|
||||||
const tracker_null_color = Color(0.743, 0.359, 0)
|
|
||||||
const tracker_assigned_color = Color(0, 0.853, 0)
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
|
||||||
tracker_check_mesh = tracker_marker.instantiate()
|
|
||||||
get_tree().get_root().add_child(tracker_check_mesh)
|
|
||||||
tracker_check_mesh.visible = false
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(_delta):
|
|
||||||
if tracker != null:
|
|
||||||
tracker_indicator_material.emission = tracker_assigned_color
|
|
||||||
look_at(tracker.global_position)
|
|
||||||
else:
|
|
||||||
tracker_indicator_material.emission = tracker_null_color
|
|
||||||
rotation = lerp(rotation, Vector3(0,0,0), _delta * 4)
|
|
||||||
|
|
||||||
if check_track:
|
|
||||||
tracker_checker(_delta)
|
|
||||||
|
|
||||||
|
|
||||||
func reload_finished():
|
|
||||||
if GameGlobals.ammo_reserve[str(ammo_type)] >= max_ammo:
|
|
||||||
GameGlobals.gun_ammo[gun_name] += max_ammo
|
|
||||||
GameGlobals.ammo_reserve[str(ammo_type)] -= max_ammo
|
|
||||||
else:
|
|
||||||
GameGlobals.gun_ammo[gun_name] += GameGlobals.ammo_reserve[str(ammo_type)]
|
|
||||||
GameGlobals.ammo_reserve[str(ammo_type)] -= GameGlobals.ammo_reserve[str(ammo_type)]
|
|
||||||
|
|
||||||
func shoot(delta):
|
|
||||||
if !anim_player.is_playing():
|
|
||||||
if tracker == null and Input.is_action_just_pressed("shoot"):
|
|
||||||
check_track = true
|
|
||||||
tracker_check_mesh.visible = true
|
|
||||||
tracker_check_mesh.anim_player.play("check")
|
|
||||||
if tracker != null and !check_track:
|
|
||||||
fire()
|
|
||||||
|
|
||||||
func fire():
|
|
||||||
if GameGlobals.gun_ammo[gun_name] > 0 and cycle_count > 0:
|
|
||||||
if !anim_player.is_playing():
|
|
||||||
GameGlobals.gun_ammo[gun_name] -= 1
|
|
||||||
#audio and anims
|
|
||||||
audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
|
|
||||||
audio_fire.play()
|
|
||||||
anim_player.play("shoot")
|
|
||||||
bullet_fire()
|
|
||||||
spawn_casing()
|
|
||||||
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
|
||||||
player.recoil.add_gun_recoil(recoil_amount.x)
|
|
||||||
SignalBus.emit_signal("shot_fired")
|
|
||||||
if fire_mode != 0:
|
|
||||||
cycle_count -= 1
|
|
||||||
|
|
||||||
elif !anim_player.is_playing() and cycle_count != 0:
|
|
||||||
anim_player.play("empty")
|
|
||||||
audio_empty.play()
|
|
||||||
|
|
||||||
func tracker_checker(_delta):
|
|
||||||
if player.bullet_ray.is_colliding():
|
|
||||||
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 fire_tracker():
|
|
||||||
anim_player.play("fire_tracker")
|
|
||||||
var instance_tracker = tracker_marker.instantiate()
|
|
||||||
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
|
|
||||||
tracker_check_mesh.visible = false
|
|
||||||
|
|
||||||
func remove_tracker():
|
|
||||||
if tracker != null:
|
|
||||||
tracker.remove()
|
|
||||||
tracker = null
|
|
||||||
|
|
||||||
func check_ammo():
|
|
||||||
if GameGlobals.gun_ammo[gun_name] == 0 and GameGlobals.ammo_reserve[str(ammo_type)] > 0:
|
|
||||||
anim_player.play("reload")
|
|
||||||
audio_reload.play()
|
|
||||||
|
|
||||||
func reload():
|
|
||||||
if tracker != null:
|
|
||||||
anim_player.play("remove_tracker")
|
|
||||||
else:
|
|
||||||
if GameGlobals.gun_ammo[gun_name] < max_ammo and player.gun.anim_player.get_current_animation() != "reload" and GameGlobals.ammo_reserve[str(ammo_type)] > 0:
|
|
||||||
anim_player.play("reload")
|
|
||||||
audio_reload.play()
|
|
||||||
remove_tracker()
|
|
||||||
if anim_player.is_playing() and anim_player.current_animation == "reload":
|
|
||||||
if GameGlobals.gun_ammo[gun_name] == 0:
|
|
||||||
GameGlobals.gun_ammo[gun_name] = 0
|
|
||||||
else:
|
|
||||||
GameGlobals.gun_ammo[gun_name] = 1
|
|
||||||
|
|
||||||
func spawn_mag():
|
|
||||||
var instance_mag = mag.instantiate()
|
|
||||||
instance_mag.position = mag_ejector.global_position
|
|
||||||
instance_mag.transform.basis = mag_ejector.global_transform.basis
|
|
||||||
get_tree().get_root().add_child(instance_mag)
|
|
||||||
|
|
||||||
func spawn_casing():
|
|
||||||
# Casing transform
|
|
||||||
var instance_casing = casing.instantiate()
|
|
||||||
instance_casing.position = casing_ejector.global_position
|
|
||||||
instance_casing.transform.basis = casing_ejector.global_transform.basis
|
|
||||||
instance_casing.player_velocity = player.velocity * transform.basis
|
|
||||||
get_tree().get_root().add_child(instance_casing)
|
|
||||||
|
|
||||||
func bullet_fire():
|
|
||||||
var instance_bullet
|
|
||||||
instance_bullet = bullet.instantiate()
|
|
||||||
instance_bullet.position = barrel_raycast.global_position
|
|
||||||
instance_bullet.transform.basis = barrel_raycast.global_transform.basis
|
|
||||||
instance_bullet.bullet_speed = bullet_speed
|
|
||||||
instance_bullet.player_velocity = player.velocity * transform.basis
|
|
||||||
instance_bullet.bullet_drop = bullet_drop
|
|
||||||
instance_bullet.random_spread_amt = random_spread_amt
|
|
||||||
instance_bullet.bullet_damage = bullet_damage
|
|
||||||
instance_bullet.bullet_force_mod = bullet_force_mod
|
|
||||||
instance_bullet.bullet_target = tracker
|
|
||||||
instance_bullet.instance_bullethole = bullethole.instantiate()
|
|
||||||
instance_bullet.player_position = player.global_position
|
|
||||||
get_tree().get_root().add_child(instance_bullet)
|
|
||||||
|
|
||||||
func swapped_out():
|
|
||||||
tracker_check_mesh.visible = false
|
|
||||||
queue_free()
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://c6npw0lul1llg
|
|
||||||
@@ -8,7 +8,6 @@ class_name weapon_resource
|
|||||||
@export_enum("Mag","Revolver","Bolt Action") var reload_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 hitscan_range : float = 100 ##for hitscan and melee weapons
|
|
||||||
@export var fov_zoom_amt = .98
|
@export var fov_zoom_amt = .98
|
||||||
@export var ads : bool = false
|
@export var ads : bool = false
|
||||||
@export var recoil_amount : Vector3 = Vector3(.05,.05,.05)
|
@export var recoil_amount : Vector3 = Vector3(.05,.05,.05)
|
||||||
@@ -22,6 +21,12 @@ class_name weapon_resource
|
|||||||
@export_group("Gun Assets")
|
@export_group("Gun Assets")
|
||||||
@export var casing : Resource
|
@export var casing : Resource
|
||||||
@export var mag : Resource
|
@export var mag : Resource
|
||||||
|
@export_group("Vibration Settings")
|
||||||
|
@export var vibration_weak_magnitude : float = .1
|
||||||
|
@export var vibration_strong_magnitude : float = .5
|
||||||
|
@export var vibration_duration = .1
|
||||||
|
@export_group("Revolver Settings")
|
||||||
|
@export var chamber_rot_amount = 60.0
|
||||||
@export_group("Shotgun Settings")
|
@export_group("Shotgun Settings")
|
||||||
@export var shotgun_spread : Vector3 = Vector3(.1,.1,.1)
|
@export var shotgun_spread : Vector3 = Vector3(.1,.1,.1)
|
||||||
@export var pellets_per_shot : int = 20
|
@export var pellets_per_shot : int = 20
|
||||||
@@ -29,3 +34,5 @@ class_name weapon_resource
|
|||||||
@export var blast_power : float = 50.0
|
@export var blast_power : float = 50.0
|
||||||
@export_group("Tracker Settings")
|
@export_group("Tracker Settings")
|
||||||
@export var tracker_asset : Resource
|
@export var tracker_asset : Resource
|
||||||
|
@export_group("Hitscan Settings")
|
||||||
|
@export var hitscan_range : float = 100 ##for hitscan and melee weapons
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ func spawn_mag():
|
|||||||
get_tree().get_root().add_child(instance_mag)
|
get_tree().get_root().add_child(instance_mag)
|
||||||
|
|
||||||
func spawn_casing():
|
func spawn_casing():
|
||||||
if weapon_info.casing != null:
|
if weapon_info.casing != null and casing_ejector != null:
|
||||||
# Casing transform
|
# Casing transform
|
||||||
var instance_casing = weapon_info.casing.instantiate()
|
var instance_casing = weapon_info.casing.instantiate()
|
||||||
instance_casing.position = casing_ejector.global_position
|
instance_casing.position = casing_ejector.global_position
|
||||||
@@ -207,6 +207,7 @@ func tracker_checker(_delta):
|
|||||||
|
|
||||||
func shotgun_pellet_spawn():
|
func shotgun_pellet_spawn():
|
||||||
audio_fire.play()
|
audio_fire.play()
|
||||||
|
spawn_casing()
|
||||||
var pellets_remaining = weapon_info.pellets_per_shot
|
var pellets_remaining = weapon_info.pellets_per_shot
|
||||||
|
|
||||||
while pellets_remaining > 0:
|
while pellets_remaining > 0:
|
||||||
@@ -255,15 +256,12 @@ func projectile_initialize():
|
|||||||
func bullet_fire():
|
func bullet_fire():
|
||||||
audio_fire.play()
|
audio_fire.play()
|
||||||
get_tree().current_scene.add_child(projectile_initialize())
|
get_tree().current_scene.add_child(projectile_initialize())
|
||||||
if casing_ejector != null:
|
spawn_casing()
|
||||||
spawn_casing()
|
|
||||||
vibration()
|
vibration()
|
||||||
if chamber != null:
|
if chamber != null:
|
||||||
revolver_chamber_rot_amt += 60
|
revolver_chamber_rot_amt += weapon_info.chamber_rot_amount
|
||||||
if weapon_info.smoke_enabled:
|
if weapon_info.smoke_enabled:
|
||||||
spawn_muzzle_smoke()
|
spawn_muzzle_smoke()
|
||||||
if casing_ejector != null:
|
|
||||||
spawn_casing()
|
|
||||||
|
|
||||||
player.recoil.add_recoil(Vector3(0,weapon_info.recoil_amount.y,weapon_info.recoil_amount.z),10,10)
|
player.recoil.add_recoil(Vector3(0,weapon_info.recoil_amount.y,weapon_info.recoil_amount.z),10,10)
|
||||||
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
||||||
@@ -286,4 +284,4 @@ func melee_collider_disable():
|
|||||||
melee_collision_shape.disabled = true
|
melee_collision_shape.disabled = true
|
||||||
|
|
||||||
func vibration():
|
func vibration():
|
||||||
Input.start_joy_vibration(0,.1,.5,.1)
|
Input.start_joy_vibration(0,weapon_info.vibration_weak_magnitude,weapon_info.vibration_strong_magnitude,weapon_info.vibration_duration)
|
||||||
|
|||||||
Reference in New Issue
Block a user