diff --git a/assets/ammo_pickup.tscn b/assets/ammo_pickup.tscn index af104dc..edae76e 100644 --- a/assets/ammo_pickup.tscn +++ b/assets/ammo_pickup.tscn @@ -57,6 +57,7 @@ shadow_mesh = SubResource("ArrayMesh_46pc3") [node name="ammo_pickup" type="RigidBody3D" node_paths=PackedStringArray("collision_shape") groups=["magnet", "pickup", "scene_rigidbody"]] collision_layer = 16 collision_mask = 17 +continuous_cd = true script = ExtResource("1_sni3c") collision_shape = NodePath("CollisionShape3D2") despawning = true diff --git a/assets/bulB228.tmp b/assets/bulB228.tmp new file mode 100644 index 0000000..eedadb9 --- /dev/null +++ b/assets/bulB228.tmp @@ -0,0 +1,126 @@ +[gd_scene load_steps=12 format=4 uid="uid://dqhltdnqyg8ni"] + +[ext_resource type="Script" path="res://scripts/bullet.gd" id="1_oj0f5"] +[ext_resource type="Texture2D" uid="uid://dqytegxsmb5kg" path="res://assets/Models/bullet.transparency.png" id="2_0ks2n"] +[ext_resource type="AudioStream" uid="uid://dqj4cx05f25jj" path="res://assets/Audio/punch-body-hard-SBA-300156881.wav" id="3_6j0l2"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mfpbf"] +resource_name = "bullet" +transparency = 4 +cull_mode = 2 +albedo_texture = ExtResource("2_0ks2n") +roughness = 0.5 +emission_enabled = true +emission = Color(1, 0.606841, 0.365696, 1) +emission_energy_multiplier = 4.0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_dtlcm"] +_surfaces = [{ +"aabb": AABB(-0.0255907, -0.0689083, -0.0255907, 0.0511814, 0.735285, 0.0511814), +"format": 34359742465, +"index_count": 180, +"index_data": PackedByteArray("AAADAAEAAAACAAMAAgAFAAMAAgAEAAUABAAHAAUABAAGAAcABgAJAAcABgAIAAkACAALAAkACAAKAAsACgANAAsACgAMAA0ABQAQAAMABQASABAADAAPAA0ADAAOAA8ADgABAA8ADgAAAAEADgACAAAAAgAGAAQABgAKAAgACgAOAAwADgAGAAIABgAOAAoAFgAdABUAFgAeAB0ACwAUAAkACwAVABQAAQAXAA8AAQARABcAAwARAAEAAwAQABEABwASAAUABwATABIADQAVAAsADQAWABUACQATAAcACQAUABMADwAWAA0ADwAXABYAGgAZABgAGQAeAB8AHgAcAB0AHAAaABsAGgAeABkAHgAaABwAFAAbABMAFAAcABsAEgAYABAAEgAaABgAFwAeABYAFwAfAB4AFQAcABQAFQAdABwAEwAaABIAEwAbABoAEAAZABEAEAAYABkAEQAfABcAEQAZAB8A"), +"lods": [0.0176836, PackedByteArray("AAAZAAEAAAACABkAAgASABkAEgAaABkAAgAEABIABAAGABIABgAIABIAHQAaABIACAAdABIACAAKAB0ACgAMAB0ADAAfAB0ADAAOAB8ADgABAB8AAQAZAB8ADgAAAAEADgACAAAADgAGAAIAAgAGAAQABgAOAAoACgAOAAwABgAKAAgAGQAdAB8AGgAdABkA"), 0.0191346, PackedByteArray("AAAEAAEABAASAAEAEgAZAAEAEgAaABkABAAMABIAHQAaABIADAAdABIADAABAB0AAQAZAB0ADAAAAAEADAAEAAAAGgAdABkA"), 0.0400226, PackedByteArray("AAAMAAEADAAdAAEAHQAZAAEADAABAB0AAQAZAB0ADAAAAAEA")], +"name": "bullet", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 32, +"vertex_data": PackedByteArray("AAAAAM4fjb2do9G8AAAAALkAIT+Mo9G8sDyUPM4fjb3BPJS8sDyUPLkAIT+wPJS8jKPRPM4fjb0iqQmzjKPRPLkAIT8AAACAsDyUPM4fjb2fPJQ8sDyUPLkAIT+wPJQ8AAAAAM4fjb17o9E8AAAAALkAIT+Mo9E8sDyUvM4fjb2fPJQ8sDyUvLkAIT+wPJQ8jKPRvM4fjb0iqQmzjKPRvLkAIT8AAACAsDyUvM4fjb3BPJS8sDyUvLkAIT+wPJS8nSBDPJymJz+cIEO8AAAAAJymJz/V+Ym81fmJPJymJz9PL4IvnSBDPJymJz+eIEM8AAAAAJymJz/V+Yk8nSBDvJymJz+eIEM81fmJvJymJz9PL4IvnSBDvJymJz+cIEO8bdeSO6uXKj9r15K7tqyfLquXKj9Mqs+7TqrPO6uXKj+nU1AwbdeSO6uXKj9v15I7tqyfLquXKj9Qqs87bdeSu6uXKj9v15I7TqrPu6uXKj+nU1AwbdeSu6uXKj9r15K7") +}] +blend_shape_mode = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_gi7r4"] +resource_name = "gunbullet1_Cylinder" +_surfaces = [{ +"aabb": AABB(-0.0255907, -0.0689083, -0.0255907, 0.0511814, 0.735285, 0.0511814), +"attribute_data": PackedByteArray("zVRQPzJjDj9eEic5j/V/PxkeJzkAECc5AAAAP4/1fz8AAAA/j/V/PwEAAD8AECc5AQAAPwAQJzl1UiE/MWMOP9YTJzkr+F8/1hMnOSv4Xz8AAAA/LPhfPwAAAD8s+F8/AAAAPyz4Xz8AAAA/LPhfP+QUAD9AS9o+TRUnOcj6Pz9NFSc5yPo/PwAAAD/I+j8/AAAAP8j6Pz8AAAA/yPo/PwAAAD/I+j8/5RQAPyCNeD7FFic5ZP0fP8UWJzlk/R8/AAAAP2T9Hz8AAAA/ZP0fPwAAAD9k/R8/AAAAP2T9Hz92UiE/uC3nPTwYJzkAAAA/PBgnOQAAAD8BAAA/AAAAPwEAAD8AAAA/AQAAPwAAAD8BAAA/AAAAP85UUD/ALec9sxknOTgFwD6zGSc5OAXAPgEAAD84BcA+AQAAPzgFwD4BAAA/OAXAPgEAAD84BcA+X5JxPySNeD4rGyc5cAqAPisbJzlwCoA+AQAAP3IKgD4BAAA/cgqAPgEAAD9yCoA+AQAAP3IKgD5eknE/QkvaPqIcJzlUHwA+ohwnOVQfAD4BAAA/VB8APgEAAD9UHwA+AQAAP1QfAD4BAAA/VB8APgAAAD8s+F8/AAAAPyz4Xz8AAAA/LPhfPwAAAD8s+F8/AAAAP4/1fz8AAAA/j/V/PwEAAD8AECc5AQAAPwAQJzkAAAA/yPo/PwAAAD/I+j8/AAAAP8j6Pz8AAAA/yPo/PwAAAD9k/R8/AAAAP2T9Hz8AAAA/ZP0fPwAAAD9k/R8/AQAAPwAAAD8BAAA/AAAAPwEAAD8AAAA/AQAAPwAAAD8BAAA/OAXAPgEAAD84BcA+AQAAPzgFwD4BAAA/OAXAPgEAAD9yCoA+AQAAP3IKgD4BAAA/cgqAPgEAAD9yCoA+AQAAP1QfAD4BAAA/VB8APgEAAD9UHwA+AQAAP1QfAD52UiE/jvV/PwAAAD8s+F8/AAAAPyz4Xz/OVFA/jvV/PwAAAD+P9X8/AQAAPwAQJznlFAA//rdePwAAAD/I+j8/AAAAP8j6Pz/lFAA/prUvPwAAAD9k/R8/AAAAP2T9Hz91UiE/FHgOPwEAAD8AAAA/AQAAPwAAAD/NVFA/FHgOPwEAAD84BcA+AQAAPzgFwD5eknE/pbUvPwEAAD9yCoA+AQAAP3IKgD5fknE//bdePwEAAD9UHwA+AQAAP1QfAD4="), +"format": 34359742487, +"index_count": 180, +"index_data": PackedByteArray("AQALAAQAAQAIAAsACQAUAA0ACQAQABQADwAbABMADwAXABsAFgAgABkAFgAdACAAHgAnACIAHgAkACcAJQAvACkAJQArAC8AEgA7AAwAEgBDADsALAA3ADAALAAzADcAMgAGADUAMgACAAYAMQAHAAAABwAVAA4AFQAjABwAIwAxACoAMQAVAAcAFQAxACMAUABpAE4AUABrAGkAJgBLACEAJgBNAEsABQBVADQABQA/AFUACgA9AAMACgA5AD0AGgBCABEAGgBHAEIALQBPACgALQBSAE8AHwBFABgAHwBJAEUANgBTAC4ANgBXAFMAXgBbAFgAWwBqAG0AagBkAGcAZABeAGEAXgBqAFsAagBeAGQASABiAEQASABlAGIAQQBaADoAQQBgAFoAVgBsAFEAVgBvAGwATABmAEoATABoAGYARgBfAEAARgBjAF8AOABcADwAOABZAFwAPgBuAFQAPgBdAG4A"), +"lods": [0.0176836, PackedByteArray("AQBcAAMAAQAIAFwACABAAFwAQABfAFwACAAPAEAADwAWAEAAFgAdAEAAaABfAEAAHQBoAEAAHQAkAGgAJAArAGgAKwBuAGgAKwAyAG4AMgAFAG4ABQBdAG4AMgACAAUAMQAHAAAAMQAVAAcABwAVAA4AFQAxACMAIwAxACoAFQAjABwAWwBnAG0AXgBnAFsA"), 0.0191346, PackedByteArray("AQAPAAMADwBAAAMAQABcAAMAQABfAFwADwArAEAAaABfAEAAKwBoAEAAKwAFAGgABQBdAGgAKwACAAUAKgAOAAAAXgBnAFsA"), 0.0400226, PackedByteArray("AQArAAMAKwBoAAMAaABcAAMAKwAFAGgABQBdAGgAKwACAAUA")], +"material": SubResource("StandardMaterial3D_mfpbf"), +"name": "bullet", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 112, +"vertex_data": PackedByteArray("AAAAAM4fjb2do9G8AAAAAM4fjb2do9G8AAAAAM4fjb2do9G8AAAAALkAIT+Mo9G8AAAAALkAIT+Mo9G8AAAAALkAIT+Mo9G8AAAAALkAIT+Mo9G8sDyUPM4fjb3BPJS8sDyUPM4fjb3BPJS8sDyUPM4fjb3BPJS8sDyUPLkAIT+wPJS8sDyUPLkAIT+wPJS8sDyUPLkAIT+wPJS8sDyUPLkAIT+wPJS8jKPRPM4fjb0iqQmzjKPRPM4fjb0iqQmzjKPRPM4fjb0iqQmzjKPRPLkAIT8AAACAjKPRPLkAIT8AAACAjKPRPLkAIT8AAACAjKPRPLkAIT8AAACAsDyUPM4fjb2fPJQ8sDyUPM4fjb2fPJQ8sDyUPM4fjb2fPJQ8sDyUPLkAIT+wPJQ8sDyUPLkAIT+wPJQ8sDyUPLkAIT+wPJQ8sDyUPLkAIT+wPJQ8AAAAAM4fjb17o9E8AAAAAM4fjb17o9E8AAAAAM4fjb17o9E8AAAAALkAIT+Mo9E8AAAAALkAIT+Mo9E8AAAAALkAIT+Mo9E8AAAAALkAIT+Mo9E8sDyUvM4fjb2fPJQ8sDyUvM4fjb2fPJQ8sDyUvM4fjb2fPJQ8sDyUvLkAIT+wPJQ8sDyUvLkAIT+wPJQ8sDyUvLkAIT+wPJQ8sDyUvLkAIT+wPJQ8jKPRvM4fjb0iqQmzjKPRvM4fjb0iqQmzjKPRvM4fjb0iqQmzjKPRvLkAIT8AAACAjKPRvLkAIT8AAACAjKPRvLkAIT8AAACAjKPRvLkAIT8AAACAsDyUvM4fjb3BPJS8sDyUvM4fjb3BPJS8sDyUvM4fjb3BPJS8sDyUvLkAIT+wPJS8sDyUvLkAIT+wPJS8sDyUvLkAIT+wPJS8sDyUvLkAIT+wPJS8nSBDPJymJz+cIEO8nSBDPJymJz+cIEO8nSBDPJymJz+cIEO8nSBDPJymJz+cIEO8AAAAAJymJz/V+Ym8AAAAAJymJz/V+Ym8AAAAAJymJz/V+Ym8AAAAAJymJz/V+Ym81fmJPJymJz9PL4Iv1fmJPJymJz9PL4Iv1fmJPJymJz9PL4Iv1fmJPJymJz9PL4IvnSBDPJymJz+eIEM8nSBDPJymJz+eIEM8nSBDPJymJz+eIEM8nSBDPJymJz+eIEM8AAAAAJymJz/V+Yk8AAAAAJymJz/V+Yk8AAAAAJymJz/V+Yk8AAAAAJymJz/V+Yk8nSBDvJymJz+eIEM8nSBDvJymJz+eIEM8nSBDvJymJz+eIEM8nSBDvJymJz+eIEM81fmJvJymJz9PL4Iv1fmJvJymJz9PL4Iv1fmJvJymJz9PL4Iv1fmJvJymJz9PL4IvnSBDvJymJz+cIEO8nSBDvJymJz+cIEO8nSBDvJymJz+cIEO8nSBDvJymJz+cIEO8bdeSO6uXKj9r15K7bdeSO6uXKj9r15K7bdeSO6uXKj9r15K7tqyfLquXKj9Mqs+7tqyfLquXKj9Mqs+7tqyfLquXKj9Mqs+7TqrPO6uXKj+nU1AwTqrPO6uXKj+nU1AwTqrPO6uXKj+nU1AwbdeSO6uXKj9v15I7bdeSO6uXKj9v15I7bdeSO6uXKj9v15I7tqyfLquXKj9Qqs87tqyfLquXKj9Qqs87tqyfLquXKj9Qqs87bdeSu6uXKj9v15I7bdeSu6uXKj9v15I7bdeSu6uXKj9v15I7TqrPu6uXKj+nU1AwTqrPu6uXKj+nU1AwTqrPu6uXKj+nU1AwbdeSu6uXKj9r15K7bdeSu6uXKj9r15K7bdeSu6uXKj9r15K7/38AAAAAQS3//4Ha/3///wAAgdr/f///Xue34f///7///4Ha/3///6AYt+H///+/AACB2v9/////fwAAAABBLf//gdr/f/////99pf9///9e57fh////v///gdr/f///Xufntv///7///32l/3////9/AAAAAEEtgdr/f/9//////32l/3///xfJn5j///8/Xufntv///7+B2v9//3//////faX/f////38AAAAAQS19pf9//3///4Ha/3//f///Rp6fmP///z99pf9//3///xfJn5j///8/gdr/f/9/////fwAAAABBLX2l/3//f///gVr/f/9///9Gnp+Y////P32l/3//f///uGGfmP///z+BWv9//3////9/AAAAAEEtgVr/f/9///99Jf9//3///7hhn5j///8/gVr/f/9////nNp+Y////P30l/3//f////38AAAAAQS19Jf9//3///wAAfaX/f///5zafmP///z+gGOe2////v30l/3//f///AAB9pf9/////fwAAAABBLQAAgdr/f///AAB9pf9///+gGLfh////vwAAgdr/f///oBjntv///78AAH2l/3///73NOen///+/Xue34f///7+9zQfJ////v17n57b///+/vc056f///79e57fh////v0EyOen///+/oBi34f///7/3tkGy////P73NB8n///+/F8mfmP///z9e5+e2////v8WWQbL///8/Rp6fmP///z/3tkGy////PxfJn5j///8/xZZBsv///z9Gnp+Y////PzlpQbL///8/uGGfmP///z85aUGy////P7hhn5j///8/B0lBsv///z/nNp+Y////PwdJQbL///8/QTIHyf///7/nNp+Y////P6AY57b///+/QTI56f///7+gGLfh////v0EyB8n///+/oBjntv///7//f///AAC90r3NOen///+/vc0Hyf///7//f///AAC90r3NOen///+/QTI56f///7//f///AAC90ve2QbL///8/vc0Hyf///7//f///AAC90sWWQbL///8/97ZBsv///z//f///AAC90sWWQbL///8/OWlBsv///z//f///AAC90jlpQbL///8/B0lBsv///z//f///AAC90gdJQbL///8/QTIHyf///7//f///AAC90kEyOen///+/QTIHyf///78=") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_dtlcm") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x6v7s"] +transparency = 1 +blend_mode = 1 +albedo_color = Color(0.75476, 0.726851, 0.555583, 1) +emission_enabled = true +emission = Color(0.944624, 0.755365, 0, 1) +emission_energy_multiplier = 8.0 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3wvag"] +direction = Vector3(0, 0, 1) +initial_velocity_min = 3.0 +initial_velocity_max = 5.0 + +[sub_resource type="BoxMesh" id="BoxMesh_jrtee"] +size = Vector3(0.04, 0.04, 0.04) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ywt21"] +transparency = 1 +blend_mode = 1 +albedo_color = Color(0.383052, 0.264096, 0.213327, 1) +emission_enabled = true +emission = Color(0.737886, 0.150238, 0.0835467, 1) +emission_energy_multiplier = 8.0 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_tqvit"] +height = 1.53305 +radius = 0.055 + +[node name="Bullet" type="RigidBody3D"] +collision_layer = 0 +collision_mask = 105 +continuous_cd = true +contact_monitor = true +max_contacts_reported = 2 +script = ExtResource("1_oj0f5") + +[node name="Cylinder" type="MeshInstance3D" parent="."] +transform = Transform3D(-2, -3.01992e-07, 0, 0, 0, -2, 3.01992e-07, -2, 0, 1.46364e-07, 0, 0.627698) +cast_shadow = 0 +mesh = SubResource("ArrayMesh_gi7r4") +skeleton = NodePath("") + +[node name="GPUParticles3D" type="GPUParticles3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.718767) +material_override = SubResource("StandardMaterial3D_x6v7s") +cast_shadow = 0 +emitting = false +one_shot = true +explosiveness = 1.0 +process_material = SubResource("ParticleProcessMaterial_3wvag") +draw_pass_1 = SubResource("BoxMesh_jrtee") + +[node name="GPUParticlesEnemy" type="GPUParticles3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.718767) +material_override = SubResource("StandardMaterial3D_ywt21") +cast_shadow = 0 +emitting = false +one_shot = true +explosiveness = 1.0 +process_material = SubResource("ParticleProcessMaterial_3wvag") +draw_pass_1 = SubResource("BoxMesh_jrtee") + +[node name="Audio" type="Node" parent="."] + +[node name="HitIndicator" type="AudioStreamPlayer" parent="Audio"] +stream = ExtResource("3_6j0l2") + +[node name="BulletCollision" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +shape = SubResource("CylinderShape3D_tqvit") + +[node name="RayCast3D" type="RayCast3D" parent="."] +target_position = Vector3(0, 0, -1) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="body_shape_entered" from="." to="." method="_on_body_shape_entered"] diff --git a/assets/bullet.tscn b/assets/bullet.tscn index 89fb800..44db353 100644 --- a/assets/bullet.tscn +++ b/assets/bullet.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=4 uid="uid://dqhltdnqyg8ni"] +[gd_scene load_steps=12 format=4 uid="uid://dqhltdnqyg8ni"] [ext_resource type="Script" path="res://scripts/bullet.gd" id="1_oj0f5"] [ext_resource type="Texture2D" uid="uid://dqytegxsmb5kg" path="res://assets/Models/bullet.transparency.png" id="2_0ks2n"] @@ -72,25 +72,24 @@ emission_enabled = true emission = Color(0.737886, 0.150238, 0.0835467, 1) emission_energy_multiplier = 8.0 -[node name="Bullet" type="Node3D"] +[sub_resource type="CylinderShape3D" id="CylinderShape3D_tqvit"] +height = 1.53305 +radius = 0.055 + +[node name="Bullet" type="RigidBody3D"] +collision_layer = 0 +collision_mask = 105 +continuous_cd = true +contact_monitor = true +max_contacts_reported = 1 script = ExtResource("1_oj0f5") -[node name="gunbullet1" type="Node3D" parent="."] -transform = Transform3D(-2, 0, -3.01992e-07, 0, 2, 0, 3.01992e-07, 0, -2, 0, 0, 0) - -[node name="Cylinder" type="MeshInstance3D" parent="gunbullet1"] -transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, -2.57922e-08, 0, -0.313849) +[node name="Cylinder" type="MeshInstance3D" parent="."] +transform = Transform3D(-2, -3.01992e-07, 0, 0, 0, -2, 3.01992e-07, -2, 0, 1.46364e-07, 0, 0.627698) cast_shadow = 0 mesh = SubResource("ArrayMesh_gi7r4") skeleton = NodePath("") -[node name="RayCast3D" type="RayCast3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.70846, 0.000340699, 0.0133128, 0.723808) -target_position = Vector3(0, 0, -2.5) -collision_mask = 105 -hit_from_inside = true -collide_with_areas = true - [node name="GPUParticles3D" type="GPUParticles3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.718767) material_override = SubResource("StandardMaterial3D_x6v7s") @@ -111,12 +110,16 @@ explosiveness = 1.0 process_material = SubResource("ParticleProcessMaterial_3wvag") draw_pass_1 = SubResource("BoxMesh_jrtee") -[node name="Timer" type="Timer" parent="."] -wait_time = 10.0 -one_shot = true -autostart = true - [node name="Audio" type="Node" parent="."] [node name="HitIndicator" type="AudioStreamPlayer" parent="Audio"] stream = ExtResource("3_6j0l2") + +[node name="BulletCollision" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +shape = SubResource("CylinderShape3D_tqvit") + +[node name="RayCast3D" type="RayCast3D" parent="."] +target_position = Vector3(0, 0, -1) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/assets/mac_10.tscn b/assets/mac_10.tscn index cb17c1e..a0517e6 100644 --- a/assets/mac_10.tscn +++ b/assets/mac_10.tscn @@ -404,7 +404,9 @@ _data = { script = ExtResource("2_6i1l4") gun_name = "Mac 10" max_ammo = 30 +start_mags = 300 bullet_damage = 2 +bullet_speed = 300 bullet_drop = 0.01 random_spread_amt = 0.5 fire_pitch_scale_amt = 0.05 diff --git a/scenes/bullet_test.tscn b/scenes/bullet_test.tscn new file mode 100644 index 0000000..a2c8b37 --- /dev/null +++ b/scenes/bullet_test.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=9 format=3 uid="uid://dq3pqbjg7o241"] + +[ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_iqxey"] +[ext_resource type="PackedScene" uid="uid://brl0bsqjl5dg3" path="res://assets/mac_10.tscn" id="2_bbv4q"] +[ext_resource type="Material" uid="uid://br2pyyyl2n3cx" path="res://assets/materials/prototype/prototype1.tres" id="3_ol40x"] +[ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="4_1k4dj"] +[ext_resource type="PackedScene" uid="uid://bmbv6ujc00jhk" path="res://assets/ammo_pickup.tscn" id="5_8hwga"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_s7a4u"] +sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) +ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) + +[sub_resource type="Sky" id="Sky_c52rg"] +sky_material = SubResource("ProceduralSkyMaterial_s7a4u") + +[sub_resource type="Environment" id="Environment_c1yeo"] +background_mode = 2 +sky = SubResource("Sky_c52rg") +tonemap_mode = 2 +ssao_enabled = true +sdfgi_enabled = true +glow_enabled = true + +[node name="BulletTest" type="Node3D" node_paths=PackedStringArray("player")] +script = ExtResource("1_iqxey") +player = NodePath("Player") +gun_1 = ExtResource("2_bbv4q") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_c1yeo") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.614285, -0.683367, 0.394542, 0, 0.5, 0.866025, -0.789084, -0.531987, 0.307143, 0, 0, 0) +shadow_enabled = true + +[node name="CSGBox3D2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.2065, 1.06369, -8.35413) +use_collision = true +size = Vector3(9.58691, 1.80511, 9.50757) +material = ExtResource("3_ol40x") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(50, 0.5, 50) +material = ExtResource("3_ol40x") + +[node name="Player" parent="." instance=ExtResource("4_1k4dj")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.93316, 1.36359, 21.3029) + +[node name="ammo_pickup" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.3394, 1.49663, 2.62687) +despawning = false + +[node name="ammo_pickup2" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.7807, 1.49663, 1.89032) +despawning = false + +[node name="ammo_pickup3" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.1793, 1.49663, 2.36679) +despawning = false + +[node name="ammo_pickup4" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.1831, 1.49663, 3.18921) +despawning = false + +[node name="ammo_pickup5" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.841, 1.49663, 3.64352) +despawning = false + +[node name="ammo_pickup6" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.6368, 1.49663, 4.15159) +despawning = false + +[node name="ammo_pickup7" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.5417, 1.49663, 4.64181) +despawning = false + +[node name="ammo_pickup8" parent="." instance=ExtResource("5_8hwga")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5812, 1.49663, 5.00169) +despawning = false diff --git a/scripts/bullet.gd b/scripts/bullet.gd index f7c3eb4..0e70234 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -1,4 +1,4 @@ -extends Node3D +extends RigidBody3D var bullet_speed var bullet_drop @@ -10,74 +10,60 @@ var distance_from_player var player_position var player_velocity -@onready var mesh = $gunbullet1 -@onready var ray = $RayCast3D +@onready var mesh = $Cylinder @onready var particles = $GPUParticles3D @onready var enemy_particles = $GPUParticlesEnemy -@onready var timer = $Timer @onready var gunbullet1 = $gunbullet1/Cylinder @onready var hit_indicator = $Audio/HitIndicator - -var rng = RandomNumberGenerator.new() -var av_x -var av_y -var av_z - # Called when the node enters the scene tree for the first time. func _ready(): - #apply random rotation - av_x = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt)) - av_y = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt)) - av_z = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt)) - rotation += Vector3(av_x,av_y,av_z) - timer.start() visible = false - ray.target_position.z *= (bullet_speed/150) + linear_velocity += transform.basis * Vector3(0, 0, -bullet_speed) # Called every frame. 'delta' is the elapsed time since the previous frame. func _physics_process(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)) distance_from_player = abs(self.global_position - player_position) if distance_from_player.x > 2 or distance_from_player.y > 2 or distance_from_player.z > 2: visible = true + + + +func _on_body_entered(body: Node) -> void: - - if ray.is_colliding() and !ray.get_collider().is_in_group("player"): - + if !body.is_in_group("player"): mesh.visible = false - ray.enabled = false #bullethole effect - ray.get_collider().add_child(instance_bullethole) - instance_bullethole.global_transform.origin = ray.get_collision_point() - if (abs(ray.get_collision_normal().y) > 0.99): - instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1)) - else: - instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal()) + #body.add_child(instance_bullethole) + #instance_bullethole.global_transform.origin = global_position + #if (abs(body.get_collision_normal().y) > 0.99): + #instance_bullethole.look_at(body.get_collision_point() + body.get_collision_normal(), Vector3(0,0,1)) + #else: + #instance_bullethole.look_at(body.get_collision_point() + body.get_collision_normal()) #move rigidbodies - if ray.get_collider().is_in_group("scene_rigidbody"): - ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod) + if body.is_in_group("scene_rigidbody"): + body.linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod) - if ray.get_collider().is_in_group("breakable"): + if body.is_in_group("breakable"): var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod) - ray.get_collider().breaking(current_velocity) + body.breaking(current_velocity) - if ray.get_collider().is_in_group("enemy_target"): + if body.is_in_group("enemy_target"): + print("enemy target hit") hit_indicator.play() enemy_particles.emitting = true - ray.get_collider().hit(bullet_damage) + body.hit(bullet_damage) - if ray.get_collider().is_in_group("switch"): - ray.get_collider().hit() + if body.is_in_group("switch"): + body.hit() - await get_tree().create_timer(1.0).timeout + #await get_tree().create_timer(1.0).timeout queue_free() diff --git a/scripts/gun.gd b/scripts/gun.gd index 0130708..7116c21 100644 --- a/scripts/gun.gd +++ b/scripts/gun.gd @@ -104,7 +104,7 @@ func shoot(delta): instance_bullet.bullet_force_mod = bullet_force_mod instance_bullet.instance_bullethole = bullethole.instantiate() instance_bullet.player_position = player.global_position - get_tree().get_root().add_child(instance_bullet) + get_tree().current_scene.add_child(instance_bullet) # Casing transform var instance_casing = casing.instantiate()