mostly finished revolver rig and script
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 154 KiB |
@@ -4,19 +4,21 @@ extends RigidBody3D
|
|||||||
@onready var audio_drop = $DropSound
|
@onready var audio_drop = $DropSound
|
||||||
|
|
||||||
var rng = RandomNumberGenerator.new()
|
var rng = RandomNumberGenerator.new()
|
||||||
|
var random_rotation = true
|
||||||
|
|
||||||
# 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():
|
||||||
var lv_x = rng.randf_range(5.0,7.0)
|
if random_rotation == true:
|
||||||
var lv_y = rng.randf_range(0.0,3.0)
|
var lv_x = rng.randf_range(5.0,7.0)
|
||||||
var lv_z = rng.randf_range(0.0,2.0)
|
var lv_y = rng.randf_range(0.0,3.0)
|
||||||
var av_x = rng.randf_range(-50.0,50.0)
|
var lv_z = rng.randf_range(0.0,2.0)
|
||||||
var av_y = rng.randf_range(-50.0,50.0)
|
var av_x = rng.randf_range(-50.0,50.0)
|
||||||
var av_z = rng.randf_range(-50.0,50.0)
|
var av_y = rng.randf_range(-50.0,50.0)
|
||||||
|
var av_z = rng.randf_range(-50.0,50.0)
|
||||||
linear_velocity += transform.basis * Vector3(lv_x, lv_y, lv_z)
|
|
||||||
angular_velocity += transform.basis * Vector3(av_x,av_y,av_z)
|
linear_velocity += transform.basis * Vector3(lv_x, lv_y, lv_z)
|
||||||
|
angular_velocity += transform.basis * Vector3(av_x,av_y,av_z)
|
||||||
|
|
||||||
|
|
||||||
func _on_timer_timeout():
|
func _on_timer_timeout():
|
||||||
collision_shape.disabled = true
|
collision_shape.disabled = true
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ mass = 0.1
|
|||||||
continuous_cd = true
|
continuous_cd = true
|
||||||
max_contacts_reported = 1
|
max_contacts_reported = 1
|
||||||
contact_monitor = true
|
contact_monitor = true
|
||||||
linear_damp = 0.5
|
linear_damp = 0.1
|
||||||
angular_damp = 0.5
|
angular_damp = 0.1
|
||||||
script = ExtResource("1_34yke")
|
script = ExtResource("1_34yke")
|
||||||
|
|
||||||
[node name="casing2" parent="." instance=ExtResource("1_8ox1t")]
|
[node name="casing2" parent="." instance=ExtResource("1_8ox1t")]
|
||||||
|
|||||||
@@ -395,6 +395,7 @@ _data = {
|
|||||||
script = ExtResource("2_6i1l4")
|
script = ExtResource("2_6i1l4")
|
||||||
gun_name = "Mac 10"
|
gun_name = "Mac 10"
|
||||||
max_ammo = 30
|
max_ammo = 30
|
||||||
|
bullet_drop = 0.05
|
||||||
random_spread_amt = 1.5
|
random_spread_amt = 1.5
|
||||||
fire_pitch_scale_amt = 0.1
|
fire_pitch_scale_amt = 0.1
|
||||||
flare_light = NodePath("mac10/SpotLight3D")
|
flare_light = NodePath("mac10/SpotLight3D")
|
||||||
|
|||||||
@@ -67,6 +67,18 @@ tracks/1/keys = {
|
|||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 0, -1.5708), Vector3(0.14619, 0.995226, -2.05295), Vector3(0.14619, 0.812874, -2.05295), Vector3(0.14619, 1.0641, -2.05295), Vector3(0.54766, -0.269512, -0.540009), Vector3(0.54766, -0.269512, -0.540009), Vector3(0, 0, -1.5708)]
|
"values": [Vector3(0, 0, -1.5708), Vector3(0.14619, 0.995226, -2.05295), Vector3(0.14619, 0.812874, -2.05295), Vector3(0.14619, 1.0641, -2.05295), Vector3(0.54766, -0.269512, -0.540009), Vector3(0.54766, -0.269512, -0.540009), Vector3(0, 0, -1.5708)]
|
||||||
}
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("revolver1/Chamber:position")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0.24, 0.45, 2.66, 2.84),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(-0.0143475, 0, -0.0849619), Vector3(-0.014, -0.3, -0.085), Vector3(-0.014, -0.3, -0.085), Vector3(-0.0143475, 0, -0.0849619)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_rlxei"]
|
[sub_resource type="Animation" id="Animation_rlxei"]
|
||||||
resource_name = "reload"
|
resource_name = "reload"
|
||||||
@@ -115,10 +127,10 @@ tracks/3/path = NodePath("revolver1/Chamber/casing_001:visible")
|
|||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
@@ -127,10 +139,10 @@ tracks/4/path = NodePath("revolver1/Chamber/casing_002:visible")
|
|||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/5/type = "value"
|
tracks/5/type = "value"
|
||||||
tracks/5/imported = false
|
tracks/5/imported = false
|
||||||
@@ -139,10 +151,10 @@ tracks/5/path = NodePath("revolver1/Chamber/casing_003:visible")
|
|||||||
tracks/5/interp = 1
|
tracks/5/interp = 1
|
||||||
tracks/5/loop_wrap = true
|
tracks/5/loop_wrap = true
|
||||||
tracks/5/keys = {
|
tracks/5/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/6/type = "value"
|
tracks/6/type = "value"
|
||||||
tracks/6/imported = false
|
tracks/6/imported = false
|
||||||
@@ -151,10 +163,10 @@ tracks/6/path = NodePath("revolver1/Chamber/casing_004:visible")
|
|||||||
tracks/6/interp = 1
|
tracks/6/interp = 1
|
||||||
tracks/6/loop_wrap = true
|
tracks/6/loop_wrap = true
|
||||||
tracks/6/keys = {
|
tracks/6/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/7/type = "value"
|
tracks/7/type = "value"
|
||||||
tracks/7/imported = false
|
tracks/7/imported = false
|
||||||
@@ -163,10 +175,10 @@ tracks/7/path = NodePath("revolver1/Chamber/casing_005:visible")
|
|||||||
tracks/7/interp = 1
|
tracks/7/interp = 1
|
||||||
tracks/7/loop_wrap = true
|
tracks/7/loop_wrap = true
|
||||||
tracks/7/keys = {
|
tracks/7/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/8/type = "value"
|
tracks/8/type = "value"
|
||||||
tracks/8/imported = false
|
tracks/8/imported = false
|
||||||
@@ -175,10 +187,10 @@ tracks/8/path = NodePath("revolver1/Chamber/casing:visible")
|
|||||||
tracks/8/interp = 1
|
tracks/8/interp = 1
|
||||||
tracks/8/loop_wrap = true
|
tracks/8/loop_wrap = true
|
||||||
tracks/8/keys = {
|
tracks/8/keys = {
|
||||||
"times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3),
|
"times": PackedFloat32Array(0.3, 0.31),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false, false, true]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
tracks/9/type = "method"
|
tracks/9/type = "method"
|
||||||
tracks/9/imported = false
|
tracks/9/imported = false
|
||||||
@@ -187,7 +199,7 @@ tracks/9/path = NodePath(".")
|
|||||||
tracks/9/interp = 1
|
tracks/9/interp = 1
|
||||||
tracks/9/loop_wrap = true
|
tracks/9/loop_wrap = true
|
||||||
tracks/9/keys = {
|
tracks/9/keys = {
|
||||||
"times": PackedFloat32Array(0.31, 1.86),
|
"times": PackedFloat32Array(0.31, 1.4),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"values": [{
|
"values": [{
|
||||||
"args": [],
|
"args": [],
|
||||||
@@ -272,7 +284,7 @@ tracks/15/keys = {
|
|||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_n8vac"]
|
[sub_resource type="Animation" id="Animation_n8vac"]
|
||||||
resource_name = "shoot"
|
resource_name = "shoot"
|
||||||
length = 0.3
|
length = 0.25
|
||||||
step = 0.01
|
step = 0.01
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
@@ -281,7 +293,7 @@ tracks/0/path = NodePath("revolver1:position")
|
|||||||
tracks/0/interp = 2
|
tracks/0/interp = 2
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PackedFloat32Array(0.03, 0.07, 0.3),
|
"times": PackedFloat32Array(0.03, 0.07, 0.25),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 0, -0.073), Vector3(0, 0.220238, 0.54816), Vector3(0, 0, -0.073)]
|
"values": [Vector3(0, 0, -0.073), Vector3(0, 0.220238, 0.54816), Vector3(0, 0, -0.073)]
|
||||||
@@ -293,7 +305,7 @@ tracks/1/path = NodePath("revolver1:rotation")
|
|||||||
tracks/1/interp = 2
|
tracks/1/interp = 2
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0.03, 0.07, 0.3),
|
"times": PackedFloat32Array(0.03, 0.07, 0.25),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 0, -1.5708), Vector3(0.450033, 0, -1.5708), Vector3(0, 0, -1.5708)]
|
"values": [Vector3(0, 0, -1.5708), Vector3(0.450033, 0, -1.5708), Vector3(0, 0, -1.5708)]
|
||||||
@@ -334,6 +346,32 @@ tracks/4/keys = {
|
|||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(1.19209e-07, 1.5708, 1.5708), Vector3(1.0472, 1.5708, 1.5708)]
|
"values": [Vector3(1.19209e-07, 1.5708, 1.5708), Vector3(1.0472, 1.5708, 1.5708)]
|
||||||
}
|
}
|
||||||
|
tracks/5/type = "method"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath(".")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0.03),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"values": [{
|
||||||
|
"args": [null],
|
||||||
|
"method": &"fire"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("revolver1/Chamber:position")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(-0.0143475, 0, -0.0849619)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_w02ee"]
|
[sub_resource type="Animation" id="Animation_w02ee"]
|
||||||
resource_name = "swap_in"
|
resource_name = "swap_in"
|
||||||
@@ -415,33 +453,26 @@ _data = {
|
|||||||
"swap_out": SubResource("Animation_nvmxj")
|
"swap_out": SubResource("Animation_nvmxj")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="revolver1" node_paths=PackedStringArray("chamber", "anim_player", "barrel_raycast", "casing_ejectors", "audio_fire", "audio_empty", "audio_reload") instance=ExtResource("1_i5f84")]
|
[node name="revolver1" instance=ExtResource("1_i5f84")]
|
||||||
script = ExtResource("2_7rsti")
|
script = ExtResource("2_7rsti")
|
||||||
gun_name = "Ye Ol' Revolver"
|
gun_name = "Ye Ol' Revolver"
|
||||||
fire_mode = 1
|
fire_mode = 1
|
||||||
|
fov_zoom_amt = 0.95
|
||||||
recoil_amount = 1.0
|
recoil_amount = 1.0
|
||||||
max_ammo = 6
|
max_ammo = 6
|
||||||
start_mags = 4
|
|
||||||
bullet_damage = 5
|
bullet_damage = 5
|
||||||
bullet_speed = 300
|
bullet_speed = 300
|
||||||
bullet_drop = 0.0
|
bullet_drop = 0.0
|
||||||
random_spread_amt = 0.1
|
random_spread_amt = 0.1
|
||||||
chamber = NodePath("revolver1/Chamber")
|
|
||||||
bullet = ExtResource("3_tru5y")
|
bullet = ExtResource("3_tru5y")
|
||||||
bullethole = ExtResource("4_ubqgq")
|
bullethole = ExtResource("4_ubqgq")
|
||||||
casing = ExtResource("5_m3vsl")
|
spawn_casing = ExtResource("5_m3vsl")
|
||||||
anim_player = NodePath("AnimationPlayer")
|
|
||||||
barrel_raycast = NodePath("revolver1/RayCastBarrel")
|
|
||||||
casing_ejectors = NodePath("revolver1/Chamber/RayCastCasing1")
|
|
||||||
audio_fire = NodePath("Audio/Fire")
|
|
||||||
audio_empty = NodePath("Audio/Empty")
|
|
||||||
audio_reload = NodePath("Audio/Reload")
|
|
||||||
|
|
||||||
[node name="revolver1" parent="." index="0"]
|
[node name="revolver1" parent="." index="0"]
|
||||||
transform = Transform3D(-0.327362, 0.501856, 0.0312333, -0.502776, -0.327224, -0.0118659, 0.00710883, -0.0326464, 0.599069, 0.104408, 0.639685, -0.116275)
|
transform = Transform3D(-2.17199e-06, 0.600001, 0, -0.594652, -2.15264e-06, -0.0799332, -0.0799332, -2.89358e-07, 0.594652, 0, 0.0653908, 0.111429)
|
||||||
|
|
||||||
[node name="Chamber" parent="revolver1" index="0"]
|
[node name="Chamber" parent="revolver1" index="0"]
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -0.0143475, 0, -0.0849619)
|
transform = Transform3D(0.866027, 4.84982e-07, 0.499998, 0.499998, -1.80999e-06, -0.866027, 4.84982e-07, 1, -1.80999e-06, -0.0143475, 0, -0.0849619)
|
||||||
|
|
||||||
[node name="casing" parent="revolver1/Chamber" index="6"]
|
[node name="casing" parent="revolver1/Chamber" index="6"]
|
||||||
transform = Transform3D(-0.611184, 1.18824e-07, 0.791489, -9.55509e-08, -1, 7.63428e-08, 0.791489, -2.89681e-08, 0.611184, -0.110813, 0.140209, -0.066206)
|
transform = Transform3D(-0.611184, 1.18824e-07, 0.791489, -9.55509e-08, -1, 7.63428e-08, 0.791489, -2.89681e-08, 0.611184, -0.110813, 0.140209, -0.066206)
|
||||||
@@ -465,7 +496,7 @@ transform = Transform3D(4.17223e-07, 5.99699e-19, 2.10229, -2.98023e-07, -2.1022
|
|||||||
transform = Transform3D(4.17223e-07, 7.04731e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98033e-07, 0.126097, 0.1392, -0.0677698)
|
transform = Transform3D(4.17223e-07, 7.04731e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98033e-07, 0.126097, 0.1392, -0.0677698)
|
||||||
|
|
||||||
[node name="Trigger" parent="revolver1" index="2"]
|
[node name="Trigger" parent="revolver1" index="2"]
|
||||||
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)
|
||||||
|
|
||||||
[node name="RayCastBarrel" type="RayCast3D" parent="revolver1" index="3"]
|
[node name="RayCastBarrel" type="RayCast3D" parent="revolver1" index="3"]
|
||||||
transform = Transform3D(1.87678, -5.68434e-14, 0, 5.68434e-14, 1.87677, 0, 0, 0, 1.87678, -0.142459, 0.000826949, -1.92175)
|
transform = Transform3D(1.87678, -5.68434e-14, 0, 5.68434e-14, 1.87677, 0, 0, 0, 1.87678, -0.142459, 0.000826949, -1.92175)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -39,7 +39,7 @@ func _process(delta):
|
|||||||
position += transform.basis * Vector3(0, 0, -bullet_speed) * delta
|
position += transform.basis * Vector3(0, 0, -bullet_speed) * delta
|
||||||
rotation.x = clamp(rotation.x - delta * bullet_drop,deg_to_rad(-90),deg_to_rad(90))
|
rotation.x = clamp(rotation.x - delta * bullet_drop,deg_to_rad(-90),deg_to_rad(90))
|
||||||
|
|
||||||
await get_tree().create_timer(.02).timeout
|
await get_tree().create_timer(.02 * Engine.time_scale * (150/bullet_speed)).timeout
|
||||||
visible = true
|
visible = true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var cycle_count
|
|||||||
@export_group("Gun Feel")
|
@export_group("Gun Feel")
|
||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
@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 recoil_amount = .2
|
@export var recoil_amount = .2
|
||||||
@export var max_ammo = 15
|
@export var max_ammo = 15
|
||||||
@export var start_mags = 3
|
@export var start_mags = 3
|
||||||
@@ -111,7 +112,7 @@ func shoot(player,delta):
|
|||||||
instance_casing.position = casing_ejector.global_position
|
instance_casing.position = casing_ejector.global_position
|
||||||
instance_casing.transform.basis = casing_ejector.global_transform.basis
|
instance_casing.transform.basis = casing_ejector.global_transform.basis
|
||||||
get_tree().get_root().add_child(instance_casing)
|
get_tree().get_root().add_child(instance_casing)
|
||||||
player.weapon_recoil(delta)
|
player.weapon_recoil()
|
||||||
if fire_mode != 0:
|
if fire_mode != 0:
|
||||||
cycle_count -= 1
|
cycle_count -= 1
|
||||||
|
|
||||||
|
|||||||
@@ -137,9 +137,9 @@ func _physics_process(delta):
|
|||||||
Engine.time_scale = lerp(0, 1, SLOWSPEED)
|
Engine.time_scale = lerp(0, 1, SLOWSPEED)
|
||||||
gun.random_spread_amt = 0
|
gun.random_spread_amt = 0
|
||||||
AudioServer.set_bus_effect_enabled(0,0,true)
|
AudioServer.set_bus_effect_enabled(0,0,true)
|
||||||
camera.fov = lerp(camera.fov, camera.fov * .98, delta * 100)
|
camera.fov = lerp(camera.fov, camera.fov * gun.fov_zoom_amt, delta * 100)
|
||||||
if sensitivity_shift == true:
|
if sensitivity_shift == true:
|
||||||
SENSITIVITY = lerp(SENSITIVITY, SENSITIVITY * .999, delta * 100)
|
SENSITIVITY = lerp(SENSITIVITY, SENSITIVITY * .998, delta * 100)
|
||||||
if remaining_stamina >0:
|
if remaining_stamina >0:
|
||||||
remaining_stamina -= 1000 * delta
|
remaining_stamina -= 1000 * delta
|
||||||
else:
|
else:
|
||||||
@@ -257,6 +257,7 @@ func weapon_bob(vel : float, delta):
|
|||||||
weapon_holder.position.y = lerp(weapon_holder.position.y, def_weapon_holder_pos.y, .1 * delta)
|
weapon_holder.position.y = lerp(weapon_holder.position.y, def_weapon_holder_pos.y, .1 * delta)
|
||||||
weapon_holder.position.x = lerp(weapon_holder.position.x, def_weapon_holder_pos.x, .1 * delta)
|
weapon_holder.position.x = lerp(weapon_holder.position.x, def_weapon_holder_pos.x, .1 * delta)
|
||||||
|
|
||||||
func weapon_recoil(delta):
|
func weapon_recoil():
|
||||||
var recoil_to = camera.rotation.x + gun.recoil_amount
|
var recoil_to = camera.rotation.x + gun.recoil_amount
|
||||||
camera.rotation.x = clamp(lerp(camera.rotation.x,recoil_to, delta * 10), deg_to_rad(-90), deg_to_rad(60))
|
print(recoil_to)
|
||||||
|
camera.rotation.x = clamp(lerp(camera.rotation.x,recoil_to, .05), deg_to_rad(-90), deg_to_rad(60))
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var cycle_count
|
|||||||
@export_group("Gun Feel")
|
@export_group("Gun Feel")
|
||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
@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 recoil_amount = .2
|
@export var recoil_amount = .2
|
||||||
@export var max_ammo = 15
|
@export var max_ammo = 15
|
||||||
@export var start_mags = 3
|
@export var start_mags = 3
|
||||||
@@ -23,7 +24,27 @@ var cycle_count
|
|||||||
@export var chamber : Node
|
@export var chamber : Node
|
||||||
@export var bullet : Resource
|
@export var bullet : Resource
|
||||||
@export var bullethole : Resource
|
@export var bullethole : Resource
|
||||||
@export var casing : Resource
|
@export var spawn_casing : Resource
|
||||||
|
@export_subgroup("Revolver/Casings")
|
||||||
|
@export var casing0 : Node
|
||||||
|
@export var casing1 : Node
|
||||||
|
@export var casing2 : Node
|
||||||
|
@export var casing3 : Node
|
||||||
|
@export var casing4 : Node
|
||||||
|
@export var casing5 : Node
|
||||||
|
@export var casing_spawn0 : Node
|
||||||
|
@export var casing_spawn1 : Node
|
||||||
|
@export var casing_spawn2 : Node
|
||||||
|
@export var casing_spawn3 : Node
|
||||||
|
@export var casing_spawn4 : Node
|
||||||
|
@export var casing_spawn5 : Node
|
||||||
|
@export_subgroup("Revolver/Bullets")
|
||||||
|
@export var bullet0 : Node
|
||||||
|
@export var bullet1 : Node
|
||||||
|
@export var bullet2 : Node
|
||||||
|
@export var bullet3 : Node
|
||||||
|
@export var bullet4 : Node
|
||||||
|
@export var bullet5 : Node
|
||||||
@export_subgroup("Raycast Nodes")
|
@export_subgroup("Raycast Nodes")
|
||||||
@export var anim_player : Node
|
@export var anim_player : Node
|
||||||
@export var barrel_raycast : Node
|
@export var barrel_raycast : Node
|
||||||
@@ -36,8 +57,13 @@ var cycle_count
|
|||||||
@onready var player = $"../../../../"
|
@onready var player = $"../../../../"
|
||||||
@onready var level_control = $"../../../../../"
|
@onready var level_control = $"../../../../../"
|
||||||
@onready var ammo_current
|
@onready var ammo_current
|
||||||
|
|
||||||
|
var casing_array = []
|
||||||
|
var casing_spawn_array = []
|
||||||
|
var bullet_array = []
|
||||||
var rng = RandomNumberGenerator.new()
|
var rng = RandomNumberGenerator.new()
|
||||||
var gun_index
|
var gun_index
|
||||||
|
var casings_chamber_last
|
||||||
#var ammo_current
|
#var ammo_current
|
||||||
var ammo_reserve
|
var ammo_reserve
|
||||||
|
|
||||||
@@ -50,6 +76,11 @@ func _ready():
|
|||||||
ammo_current = level_control.ammo_current[gun_index]
|
ammo_current = level_control.ammo_current[gun_index]
|
||||||
ammo_reserve = level_control.ammo_reserve[gun_index]
|
ammo_reserve = level_control.ammo_reserve[gun_index]
|
||||||
|
|
||||||
|
casings_chamber_last = max_ammo
|
||||||
|
|
||||||
|
casing_array = [casing0,casing1,casing2,casing3,casing4,casing5]
|
||||||
|
casing_spawn_array = [casing_spawn0,casing_spawn1,casing_spawn2,casing_spawn3,casing_spawn4,casing_spawn5]
|
||||||
|
bullet_array = [bullet0,bullet1,bullet2,bullet3,bullet4,bullet5]
|
||||||
|
|
||||||
if fire_mode == 0:
|
if fire_mode == 0:
|
||||||
cycle_count = 1
|
cycle_count = 1
|
||||||
@@ -69,13 +100,28 @@ func _process(delta):
|
|||||||
|
|
||||||
|
|
||||||
func reload_finished():
|
func reload_finished():
|
||||||
|
#if max ammo in reserve fill all the way
|
||||||
if level_control.ammo_reserve[gun_index] >= max_ammo:
|
if level_control.ammo_reserve[gun_index] >= max_ammo:
|
||||||
level_control.ammo_current[gun_index] += max_ammo
|
level_control.ammo_current[gun_index] += max_ammo
|
||||||
level_control.ammo_reserve[gun_index] -= max_ammo
|
level_control.ammo_reserve[gun_index] -= max_ammo
|
||||||
|
casings_chamber_last = max_ammo
|
||||||
|
for i in casing_array:
|
||||||
|
i.visible = true
|
||||||
|
for i in bullet_array:
|
||||||
|
i.visible = true
|
||||||
player.reloading = false
|
player.reloading = false
|
||||||
|
#if not max ammo in reserve add remaining ammo
|
||||||
else:
|
else:
|
||||||
level_control.ammo_current[gun_index] += level_control.ammo_reserve[gun_index]
|
level_control.ammo_current[gun_index] += level_control.ammo_reserve[gun_index]
|
||||||
|
var casings_in_chamber = level_control.ammo_reserve[gun_index]
|
||||||
|
casings_chamber_last = level_control.ammo_reserve[gun_index]
|
||||||
level_control.ammo_reserve[gun_index] -= level_control.ammo_reserve[gun_index]
|
level_control.ammo_reserve[gun_index] -= level_control.ammo_reserve[gun_index]
|
||||||
|
|
||||||
|
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
|
||||||
player.reloading = false
|
player.reloading = false
|
||||||
|
|
||||||
func shoot(player,delta):
|
func shoot(player,delta):
|
||||||
@@ -90,44 +136,54 @@ func shoot(player,delta):
|
|||||||
audio_fire.play()
|
audio_fire.play()
|
||||||
anim_player.play("shoot")
|
anim_player.play("shoot")
|
||||||
# instance bullet
|
# 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
|
|
||||||
if player.gun_folded == false:
|
|
||||||
instance_bullet.transform.basis = player.bullet_ray.global_transform.basis
|
|
||||||
else:
|
|
||||||
instance_bullet.transform.basis = barrel_raycast.global_transform.basis
|
|
||||||
instance_bullet.bullet_speed = bullet_speed
|
|
||||||
instance_bullet.bullet_drop = bullet_drop
|
|
||||||
instance_bullet.bullet_damage = bullet_damage
|
|
||||||
instance_bullet.random_spread_amt = random_spread_amt
|
|
||||||
instance_bullet.instance_bullethole = bullethole.instantiate()
|
|
||||||
instance_bullet.gun = self
|
|
||||||
get_tree().get_root().add_child(instance_bullet)
|
|
||||||
player.weapon_recoil(delta)
|
|
||||||
# chamberspin transform
|
|
||||||
#DO SOMETHING HERE
|
|
||||||
if fire_mode != 0:
|
|
||||||
cycle_count -= 1
|
|
||||||
|
|
||||||
elif !anim_player.is_playing() and cycle_count != 0:
|
elif !anim_player.is_playing() and cycle_count != 0:
|
||||||
anim_player.play("empty")
|
anim_player.play("empty")
|
||||||
audio_empty.play()
|
audio_empty.play()
|
||||||
|
|
||||||
|
func fire(delta):
|
||||||
|
var instance_bullet = bullet.instantiate()
|
||||||
|
instance_bullet.position = player.bullet_ray.global_position
|
||||||
|
#shoot bullet from real gun if gun is folded up
|
||||||
|
if player.gun_folded == false:
|
||||||
|
instance_bullet.transform.basis = player.bullet_ray.global_transform.basis
|
||||||
|
else:
|
||||||
|
instance_bullet.transform.basis = barrel_raycast.global_transform.basis
|
||||||
|
instance_bullet.bullet_speed = bullet_speed
|
||||||
|
instance_bullet.bullet_drop = bullet_drop
|
||||||
|
instance_bullet.bullet_damage = bullet_damage
|
||||||
|
instance_bullet.random_spread_amt = random_spread_amt
|
||||||
|
instance_bullet.instance_bullethole = bullethole.instantiate()
|
||||||
|
instance_bullet.gun = self
|
||||||
|
get_tree().get_root().add_child(instance_bullet)
|
||||||
|
player.weapon_recoil()
|
||||||
|
# chamberspin transform
|
||||||
|
#DO SOMETHING HERE
|
||||||
|
if fire_mode != 0:
|
||||||
|
cycle_count -= 1
|
||||||
|
|
||||||
func reload(player,delta):
|
func reload(player,delta):
|
||||||
if level_control.ammo_current[gun_index] < max_ammo and player.reloading == false and level_control.ammo_reserve[gun_index] > 0:
|
if level_control.ammo_current[gun_index] < max_ammo and player.reloading == false and level_control.ammo_reserve[gun_index] > 0:
|
||||||
player.reloading = true
|
player.reloading = true
|
||||||
anim_player.play("reload")
|
anim_player.play("reload")
|
||||||
audio_reload.play()
|
audio_reload.play()
|
||||||
|
for i in bullet_array:
|
||||||
|
i.visible = false
|
||||||
if anim_player.is_playing() and anim_player.current_animation == "reload":
|
if anim_player.is_playing() and anim_player.current_animation == "reload":
|
||||||
level_control.ammo_current[gun_index] = 0
|
level_control.ammo_current[gun_index] = 0
|
||||||
|
|
||||||
func spawn_casings():
|
func spawn_casings():
|
||||||
pass
|
for i in casing_array:
|
||||||
#var instance_mag = mag.instantiate()
|
if casings_chamber_last > 0:
|
||||||
#instance_mag.position = mag_ejector.global_position
|
var instance_casing = spawn_casing.instantiate()
|
||||||
#instance_mag.transform.basis = mag_ejector.global_transform.basis
|
instance_casing.position = i.global_position
|
||||||
#get_tree().get_root().add_child(instance_mag)
|
instance_casing.random_rotation = false
|
||||||
|
instance_casing.transform.basis = i.global_transform.basis
|
||||||
|
instance_casing.rotation.x += deg_to_rad(90)
|
||||||
|
instance_casing.linear_velocity.y = -(8 + rng.randf_range(0,3))
|
||||||
|
get_tree().get_root().add_child(instance_casing)
|
||||||
|
casings_chamber_last -= 1
|
||||||
|
|
||||||
func swapped_out():
|
func swapped_out():
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|||||||
Reference in New Issue
Block a user