First shooting implementation
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Diffuse.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Diffuse.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Glossiness.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Glossiness.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Normal.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1001_Normal.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1002_Diffuse.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1002_Diffuse.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1002_Normal.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/blender/textures/Ch02_1002_Normal.png.import
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1,9 +1,8 @@
 | 
				
			|||||||
[gd_scene load_steps=14 format=3 uid="uid://hivk5ek6u887"]
 | 
					[gd_scene load_steps=14 format=3 uid="uid://hivk5ek6u887"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://du0f7hc4skged" path="res://addons/kenney_prototype_textures/dark/texture_06.png" id="1_lae2b"]
 | 
					[ext_resource type="Texture2D" uid="uid://c5uytbu1wc1bq" path="res://addons/kenney_prototype_textures/orange/texture_09.png" id="1_llm1c"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://dmge3tk7w0b1n" path="res://addons/kenney_prototype_textures/dark/texture_01.png" id="2_7newm"]
 | 
					[ext_resource type="Texture2D" uid="uid://e4nd8b6f0tw7" path="res://addons/kenney_prototype_textures/dark/texture_04.png" id="2_k2arh"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cn7ty4xcbiqaf" path="res://assets/models/character/character.glb" id="3_exa4b"]
 | 
					[ext_resource type="PackedScene" uid="uid://1j5ajc26w5xk" path="res://scenes/utils/character_bak.tscn" id="3_6anfg"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://ccm77j5rkh21w" path="res://scenes/utils/character.tscn" id="3_omcjn"]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bcdcw"]
 | 
					[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bcdcw"]
 | 
				
			||||||
albedo_texture = ExtResource("1_lae2b")
 | 
					albedo_texture = ExtResource("1_lae2b")
 | 
				
			||||||
@@ -40,77 +39,38 @@ volumetric_fog_density = 0.0
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
					[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0)
 | 
					transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0)
 | 
				
			||||||
shadow_enabled = true
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Base" type="Node3D" parent="."]
 | 
					[node name="World" type="Node3D" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Floor" type="CSGBox3D" parent="Base"]
 | 
					[node name="Base" type="Node3D" parent="World"]
 | 
				
			||||||
material_override = SubResource("StandardMaterial3D_bcdcw")
 | 
					
 | 
				
			||||||
 | 
					[node name="Floor" type="CSGBox3D" parent="World/Base"]
 | 
				
			||||||
use_collision = true
 | 
					use_collision = true
 | 
				
			||||||
size = Vector3(100, 1, 100)
 | 
					size = Vector3(100, 1, 100)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Wall_1" type="CSGBox3D" parent="Base"]
 | 
					[node name="Wall_1" type="CSGBox3D" parent="World/Base"]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0)
 | 
				
			||||||
material_override = SubResource("StandardMaterial3D_p4psn")
 | 
					material_override = SubResource("StandardMaterial3D_p4psn")
 | 
				
			||||||
use_collision = true
 | 
					use_collision = true
 | 
				
			||||||
size = Vector3(1, 20, 100)
 | 
					size = Vector3(1, 20, 100)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Wall_2" type="CSGBox3D" parent="Base"]
 | 
					[node name="Wall_2" type="CSGBox3D" parent="World/Base"]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0)
 | 
				
			||||||
material_override = SubResource("StandardMaterial3D_0jiki")
 | 
					material_override = SubResource("StandardMaterial3D_0jiki")
 | 
				
			||||||
use_collision = true
 | 
					use_collision = true
 | 
				
			||||||
size = Vector3(1, 20, 100)
 | 
					size = Vector3(1, 20, 100)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Wall_3" type="CSGBox3D" parent="Base"]
 | 
					[node name="Wall_3" type="CSGBox3D" parent="World/Base"]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
 | 
				
			||||||
material_override = SubResource("StandardMaterial3D_1pwnn")
 | 
					material_override = SubResource("StandardMaterial3D_1pwnn")
 | 
				
			||||||
use_collision = true
 | 
					use_collision = true
 | 
				
			||||||
size = Vector3(100, 20, 1)
 | 
					size = Vector3(100, 20, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Wall_4" type="CSGBox3D" parent="Base"]
 | 
					[node name="Wall_4" type="CSGBox3D" parent="World/Base"]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -50)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -50)
 | 
				
			||||||
material_override = SubResource("StandardMaterial3D_1yo6k")
 | 
					material_override = SubResource("StandardMaterial3D_1yo6k")
 | 
				
			||||||
use_collision = true
 | 
					use_collision = true
 | 
				
			||||||
size = Vector3(100, 20, 1)
 | 
					size = Vector3(100, 20, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
 | 
					[node name="Character" parent="World" instance=ExtResource("3_6anfg")]
 | 
				
			||||||
environment = SubResource("Environment_5t2t5")
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.6432, 0)
 | 
				
			||||||
camera_attributes = SubResource("CameraAttributesPractical_32hnm")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Room" type="Node3D" parent="."]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Roof" type="CSGBox3D" parent="Room"]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 10, 40)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(20, 1, 20)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Box2" type="CSGBox3D" parent="Room"]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.4113, -0.977205, 30.1989)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(15, 4, 5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Box2" type="CSGBox3D" parent="Room/Box2"]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.808781, 0.545475, -9.7784)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(15, 4, 5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Box" type="CSGBox3D" parent="Room"]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45.354, 2, 30)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(15, 4, 5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Box3" type="CSGBox3D" parent="Room"]
 | 
					 | 
				
			||||||
transform = Transform3D(0.919513, -0.393059, 0, 0.393059, 0.919513, 0, 0, 0, 1, -1.57507, -0.966964, 27.4611)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(15, 4, 5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Box4" type="CSGBox3D" parent="Room"]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9181, -1.39989, 28.83)
 | 
					 | 
				
			||||||
use_collision = true
 | 
					 | 
				
			||||||
size = Vector3(15, 4, 5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="character" parent="Room" instance=ExtResource("3_exa4b")]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2581, 0.499998, 16.9319)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Character" parent="." instance=ExtResource("3_omcjn")]
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,10 @@
 | 
				
			|||||||
[gd_scene load_steps=9 format=3 uid="uid://ccm77j5rkh21w"]
 | 
					[gd_scene load_steps=11 format=3 uid="uid://ccm77j5rkh21w"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://scripts/character_controller.gd" id="1_sue4n"]
 | 
					[ext_resource type="Script" path="res://scripts/character_controller.gd" id="1_sue4n"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://ceywbkneyatpw" path="res://scenes/utils/body.tscn" id="2_2couv"]
 | 
					[ext_resource type="PackedScene" uid="uid://ceywbkneyatpw" path="res://scenes/utils/body.tscn" id="2_2couv"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://bmqutwuj28san" path="res://scenes/utils/view_model_camera.tscn" id="4_al83x"]
 | 
					[ext_resource type="PackedScene" uid="uid://bmqutwuj28san" path="res://scenes/utils/view_model_camera.tscn" id="4_al83x"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scenes/weapon/pistol.gd" id="4_uwcjh"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://d21giy40pnjhe" path="res://scenes/weapon/pistol.tscn" id="5_6k7rq"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cn7ty4xcbiqaf" path="res://assets/models/character/character.glb" id="8_42pl8"]
 | 
					[ext_resource type="PackedScene" uid="uid://cn7ty4xcbiqaf" path="res://assets/models/character/character.glb" id="8_42pl8"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_adkee"]
 | 
					[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_adkee"]
 | 
				
			||||||
@@ -100,7 +102,7 @@ script = ExtResource("1_sue4n")
 | 
				
			|||||||
ANIMATION_PLAYER = NodePath("AnimationPlayer")
 | 
					ANIMATION_PLAYER = NodePath("AnimationPlayer")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
 | 
					[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.439226, 0, 0.9, 0)
 | 
					transform = Transform3D(1, 0, 0, 0, 1.66022, 0, 0, 0, 0.967678, 0, 0.9, 0)
 | 
				
			||||||
shape = SubResource("CapsuleShape3D_adkee")
 | 
					shape = SubResource("CapsuleShape3D_adkee")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="character" parent="CharacterBody3D" instance=ExtResource("2_2couv")]
 | 
					[node name="character" parent="CharacterBody3D" instance=ExtResource("2_2couv")]
 | 
				
			||||||
@@ -113,6 +115,12 @@ radius = 0.001
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[node name="ViewModelCamera" parent="CharacterBody3D/UpperTorso" instance=ExtResource("4_al83x")]
 | 
					[node name="ViewModelCamera" parent="CharacterBody3D/UpperTorso" instance=ExtResource("4_al83x")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00122696, 0.093623, -0.179357)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00122696, 0.093623, -0.179357)
 | 
				
			||||||
 | 
					script = ExtResource("4_uwcjh")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Pistol" parent="CharacterBody3D/UpperTorso/ViewModelCamera" instance=ExtResource("5_6k7rq")]
 | 
				
			||||||
 | 
					transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.0287516, -0.136104, -0.276055)
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					script = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="CharacterBody3D"]
 | 
					[node name="AnimationPlayer" type="AnimationPlayer" parent="CharacterBody3D"]
 | 
				
			||||||
root_node = NodePath("../CollisionShape3D")
 | 
					root_node = NodePath("../CollisionShape3D")
 | 
				
			||||||
@@ -121,6 +129,7 @@ libraries = {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="RealBody" type="Node3D" parent="CharacterBody3D"]
 | 
					[node name="RealBody" type="Node3D" parent="CharacterBody3D"]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="character2" parent="CharacterBody3D/RealBody" instance=ExtResource("8_42pl8")]
 | 
					[node name="character2" parent="CharacterBody3D/RealBody" instance=ExtResource("8_42pl8")]
 | 
				
			||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.0147014)
 | 
					transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.0147014)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										42
									
								
								scenes/utils/character_bak.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								scenes/utils/character_bak.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=7 format=3 uid="uid://1j5ajc26w5xk"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scripts/character_controller.gd" id="1_vb71f"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://d1nfjip21kjpu" path="res://addons/kenney_prototype_textures/orange/texture_13.png" id="2_j4i2j"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scenes/weapon/pistol.gd" id="3_gblkg"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://d21giy40pnjhe" path="res://scenes/weapon/pistol.tscn" id="4_xw0oh"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m6bjf"]
 | 
				
			||||||
 | 
					albedo_texture = ExtResource("2_j4i2j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="CylinderShape3D" id="CylinderShape3D_1sre5"]
 | 
				
			||||||
 | 
					radius = 0.227448
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Character" type="Node3D"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CharacterBody3D" type="CharacterBody3D" parent="."]
 | 
				
			||||||
 | 
					script = ExtResource("1_vb71f")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Body" type="CSGCylinder3D" parent="CharacterBody3D"]
 | 
				
			||||||
 | 
					transform = Transform3D(0.999983, 0.00579446, 0, -0.00579446, 0.999983, 0, 0, 0, 1, 0, 0.975222, 0)
 | 
				
			||||||
 | 
					material_override = SubResource("StandardMaterial3D_m6bjf")
 | 
				
			||||||
 | 
					radius = 0.492
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="UpperTorso" type="CSGSphere3D" parent="CharacterBody3D/Body"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.298181, 0)
 | 
				
			||||||
 | 
					radius = 0.001
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CameraMount" type="Node3D" parent="CharacterBody3D/Body/UpperTorso"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0214237, -0.151336, -0.0131589)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Camera" type="Camera3D" parent="CharacterBody3D/Body/UpperTorso/CameraMount"]
 | 
				
			||||||
 | 
					transform = Transform3D(0.999902, 0.0139622, 0, -0.0139622, 0.999902, 0, 0, 0, 0.999999, 0, 0, 0)
 | 
				
			||||||
 | 
					current = true
 | 
				
			||||||
 | 
					script = ExtResource("3_gblkg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Pistol" parent="CharacterBody3D/Body/UpperTorso/CameraMount/Camera" instance=ExtResource("4_xw0oh")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.999901, -0.0139622, -8.74142e-08, -0.0139621, 0.999901, -1.22061e-09, 8.74228e-08, 0, -1, 0.346313, -0.1921, -0.617977)
 | 
				
			||||||
 | 
					script = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
 | 
				
			||||||
 | 
					transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0.981342, 0)
 | 
				
			||||||
 | 
					shape = SubResource("CylinderShape3D_1sre5")
 | 
				
			||||||
							
								
								
									
										28
									
								
								scenes/weapon/bullet.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								scenes/weapon/bullet.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					extends Node3D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const SPEED = 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@onready var mesh = $MeshInstance3D
 | 
				
			||||||
 | 
					@onready var ray = $RayCast3D
 | 
				
			||||||
 | 
					@onready var particles = $GPUParticles3D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Called when the node enters the scene tree for the first time.
 | 
				
			||||||
 | 
					func _ready() -> void:
 | 
				
			||||||
 | 
						pass # Replace with function body.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
				
			||||||
 | 
					func _process(delta):
 | 
				
			||||||
 | 
						position += transform.basis * Vector3(0, 0, 	SPEED) * delta
 | 
				
			||||||
 | 
						ray.collision_mask = 1
 | 
				
			||||||
 | 
						ray.enabled = 1
 | 
				
			||||||
 | 
						if ray.is_colliding():
 | 
				
			||||||
 | 
							print("col")
 | 
				
			||||||
 | 
							mesh.visible = false
 | 
				
			||||||
 | 
							particles.emitting = true
 | 
				
			||||||
 | 
							await get_tree().create_timer(1.0).timeout
 | 
				
			||||||
 | 
							queue_free()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_timer_timeout():
 | 
				
			||||||
 | 
						queue_free()
 | 
				
			||||||
							
								
								
									
										56
									
								
								scenes/weapon/bullet.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								scenes/weapon/bullet.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=7 format=3 uid="uid://b0agqeg53tey5"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scenes/weapon/bullet.gd" id="1_th28m"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="BoxMesh" id="BoxMesh_vxst2"]
 | 
				
			||||||
 | 
					size = Vector3(0.2, 0.2, 0.5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p8o05"]
 | 
				
			||||||
 | 
					albedo_color = Color(0.894987, 0.000702324, 0.905119, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ynv38"]
 | 
				
			||||||
 | 
					albedo_color = Color(0.929412, 0, 0, 1)
 | 
				
			||||||
 | 
					emission_enabled = true
 | 
				
			||||||
 | 
					emission = Color(0.886321, 0.78611, 0.23507, 1)
 | 
				
			||||||
 | 
					emission_energy_multiplier = 7.71
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_58cgi"]
 | 
				
			||||||
 | 
					direction = Vector3(0, 0, 1)
 | 
				
			||||||
 | 
					spread = 22.5
 | 
				
			||||||
 | 
					initial_velocity_min = 3.47
 | 
				
			||||||
 | 
					initial_velocity_max = 5.0
 | 
				
			||||||
 | 
					gravity = Vector3(0, -19.6, 0)
 | 
				
			||||||
 | 
					linear_accel_min = -6.67
 | 
				
			||||||
 | 
					linear_accel_max = 6.67
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="BoxMesh" id="BoxMesh_mfkmi"]
 | 
				
			||||||
 | 
					size = Vector3(0.05, 0.05, 0.05)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Bullet" type="Node3D"]
 | 
				
			||||||
 | 
					script = ExtResource("1_th28m")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
 | 
				
			||||||
 | 
					transform = Transform3D(0.663102, 0, 0, 0, 0.601826, 0, 0, 0, 0.58984, 0, 0, 0)
 | 
				
			||||||
 | 
					mesh = SubResource("BoxMesh_vxst2")
 | 
				
			||||||
 | 
					surface_material_override/0 = SubResource("StandardMaterial3D_p8o05")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RayCast3D" type="RayCast3D" parent="."]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.100459)
 | 
				
			||||||
 | 
					target_position = Vector3(0, 0, -0.5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="GPUParticles3D" type="GPUParticles3D" parent="."]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.18476)
 | 
				
			||||||
 | 
					material_override = SubResource("StandardMaterial3D_ynv38")
 | 
				
			||||||
 | 
					emitting = false
 | 
				
			||||||
 | 
					amount = 10
 | 
				
			||||||
 | 
					one_shot = true
 | 
				
			||||||
 | 
					explosiveness = 1.0
 | 
				
			||||||
 | 
					process_material = SubResource("ParticleProcessMaterial_58cgi")
 | 
				
			||||||
 | 
					draw_pass_1 = SubResource("BoxMesh_mfkmi")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Timer" type="Timer" parent="."]
 | 
				
			||||||
 | 
					wait_time = 10.0
 | 
				
			||||||
 | 
					one_shot = true
 | 
				
			||||||
 | 
					autostart = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
 | 
				
			||||||
@@ -1,5 +1,11 @@
 | 
				
			|||||||
extends Node3D
 | 
					extends Node3D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var bullet = load("res://scenes/weapon/bullet.tscn")
 | 
				
			||||||
 | 
					var instance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@onready var gun_anim = $Pistol/DEAGLE/GunAnimation
 | 
				
			||||||
 | 
					#@onready var gun_barrel = $DEAGLE/CSGSphere3D
 | 
				
			||||||
 | 
					@onready var gun_barrel = $Pistol/DEAGLE/RayCast3D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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() -> void:
 | 
					func _ready() -> void:
 | 
				
			||||||
@@ -7,15 +13,16 @@ func _ready() -> void:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# TODO: Handle the shot logic
 | 
					# TODO: Handle the shot logic
 | 
				
			||||||
func shot():
 | 
					func shot():
 | 
				
			||||||
	var pistol := $DEAGLE
 | 
						var main_root = get_node("/root/TestMap")
 | 
				
			||||||
	pistol.rotate_z(20.0)
 | 
						if Input.is_action_pressed("shot"):
 | 
				
			||||||
 | 
							if !gun_anim.is_playing():
 | 
				
			||||||
 | 
								gun_anim.play("Shoot")
 | 
				
			||||||
 | 
								instance = bullet.instantiate()
 | 
				
			||||||
 | 
								instance.position = gun_barrel.global_position
 | 
				
			||||||
 | 
								instance.transform.basis = gun_barrel.global_transform.basis
 | 
				
			||||||
 | 
								get_tree().get_root().add_child(instance)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO: Handle the reload logic
 | 
					# TODO: Handle the reload logic
 | 
				
			||||||
func reload():
 | 
					func reload():
 | 
				
			||||||
	var pistol := $DEAGLE
 | 
						var pistol := $DEAGLE
 | 
				
			||||||
	pistol.rotate_z(-20.0)
 | 
						pistol.rotate_z(-20.0)
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
 | 
					 | 
				
			||||||
func _process(delta: float) -> void:
 | 
					 | 
				
			||||||
	pass
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,90 @@
 | 
				
			|||||||
[gd_scene load_steps=3 format=3 uid="uid://d21giy40pnjhe"]
 | 
					[gd_scene load_steps=6 format=3 uid="uid://d21giy40pnjhe"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://dumj5qqh2h2tg" path="res://assets/models/weapon/DEAGLE/DEAGLE.glb" id="1_ard7n"]
 | 
					[ext_resource type="PackedScene" uid="uid://62jiwdcdnfwp" path="res://assets/models/weapon/DEAGLE/DEAGLE.glb" id="1_ard7n"]
 | 
				
			||||||
[ext_resource type="Script" path="res://scenes/weapon/pistol.gd" id="1_jgbvq"]
 | 
					[ext_resource type="Script" path="res://scenes/weapon/pistol.gd" id="1_jgbvq"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Animation" id="Animation_7a114"]
 | 
				
			||||||
 | 
					length = 0.1
 | 
				
			||||||
 | 
					step = 0.01
 | 
				
			||||||
 | 
					tracks/0/type = "value"
 | 
				
			||||||
 | 
					tracks/0/imported = false
 | 
				
			||||||
 | 
					tracks/0/enabled = true
 | 
				
			||||||
 | 
					tracks/0/path = NodePath(".:position")
 | 
				
			||||||
 | 
					tracks/0/interp = 1
 | 
				
			||||||
 | 
					tracks/0/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/0/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.03, 0.1),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector3(0, 0, 0), Vector3(0, 0, -0.05), Vector3(0, 0, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/1/type = "value"
 | 
				
			||||||
 | 
					tracks/1/imported = false
 | 
				
			||||||
 | 
					tracks/1/enabled = true
 | 
				
			||||||
 | 
					tracks/1/path = NodePath(".:rotation")
 | 
				
			||||||
 | 
					tracks/1/interp = 1
 | 
				
			||||||
 | 
					tracks/1/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/1/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.03, 0.1),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector3(0, 0, 0), Vector3(-0.872665, 0, 0), Vector3(0, 0, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Animation" id="Animation_48qgm"]
 | 
				
			||||||
 | 
					resource_name = "Shoot"
 | 
				
			||||||
 | 
					length = 0.1
 | 
				
			||||||
 | 
					step = 0.01
 | 
				
			||||||
 | 
					tracks/0/type = "value"
 | 
				
			||||||
 | 
					tracks/0/imported = false
 | 
				
			||||||
 | 
					tracks/0/enabled = true
 | 
				
			||||||
 | 
					tracks/0/path = NodePath(".:position")
 | 
				
			||||||
 | 
					tracks/0/interp = 1
 | 
				
			||||||
 | 
					tracks/0/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/0/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.02, 0.1),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector3(0, 0, 0), Vector3(0, 0, -0.05), Vector3(0, 0, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/1/type = "value"
 | 
				
			||||||
 | 
					tracks/1/imported = false
 | 
				
			||||||
 | 
					tracks/1/enabled = true
 | 
				
			||||||
 | 
					tracks/1/path = NodePath(".:rotation")
 | 
				
			||||||
 | 
					tracks/1/interp = 1
 | 
				
			||||||
 | 
					tracks/1/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/1/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.02, 0.1),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector3(0, 0, 0), Vector3(-0.698132, 0, 0), Vector3(0, 0, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationLibrary" id="AnimationLibrary_6ael1"]
 | 
				
			||||||
 | 
					_data = {
 | 
				
			||||||
 | 
					"RESET": SubResource("Animation_7a114"),
 | 
				
			||||||
 | 
					"Shoot": SubResource("Animation_48qgm")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Pistol" type="Node3D"]
 | 
					[node name="Pistol" type="Node3D"]
 | 
				
			||||||
 | 
					transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
 | 
				
			||||||
script = ExtResource("1_jgbvq")
 | 
					script = ExtResource("1_jgbvq")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DEAGLE" parent="." instance=ExtResource("1_ard7n")]
 | 
					[node name="DEAGLE" parent="." instance=ExtResource("1_ard7n")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.678243, 0, 0, 0, 0.678243, 0, 0, 0, 0.678243, 0, 0, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="MuzzlePosition" type="Node3D" parent="DEAGLE"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0979672, 0.226597)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="GunAnimation" type="AnimationPlayer" parent="DEAGLE"]
 | 
				
			||||||
 | 
					libraries = {
 | 
				
			||||||
 | 
					"": SubResource("AnimationLibrary_6ael1")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RayCast3D" type="RayCast3D" parent="DEAGLE"]
 | 
				
			||||||
 | 
					transform = Transform3D(0.676274, 0, 0, 0, 0.676251, 0.00547663, 0, -0.00547663, 0.676251, 0, 0.0910377, 0.277056)
 | 
				
			||||||
 | 
					target_position = Vector3(0, 0, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CSGSphere3D" type="CSGSphere3D" parent="DEAGLE"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0827075, 0.0943936, 0.248599)
 | 
				
			||||||
 | 
					radius = 0.001
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,8 +39,8 @@ func _unhandled_input(event: InputEvent) -> void:
 | 
				
			|||||||
		if mouse_captured: _rotate_camera()
 | 
							if mouse_captured: _rotate_camera()
 | 
				
			||||||
	if Input.is_action_just_pressed("jump"): jumping = true
 | 
						if Input.is_action_just_pressed("jump"): jumping = true
 | 
				
			||||||
	if Input.is_action_just_pressed("exit"): get_tree().quit()
 | 
						if Input.is_action_just_pressed("exit"): get_tree().quit()
 | 
				
			||||||
	if Input.is_action_just_pressed("shot"): $UpperTorso/Pistol.shot()
 | 
						if Input.is_action_just_pressed("shot"): $UpperTorso/ViewModelCamera.shot()
 | 
				
			||||||
	if Input.is_action_just_pressed("reload"): $UpperTorso/Pistol.reload()
 | 
						if Input.is_action_just_pressed("reload"): $Body/UpperTorso/CameraMount/Camera.reload()
 | 
				
			||||||
	if Input.is_action_just_pressed("crouch"): crouch()
 | 
						if Input.is_action_just_pressed("crouch"): crouch()
 | 
				
			||||||
	if Input.is_action_just_released("crouch"): uncrouch()
 | 
						if Input.is_action_just_released("crouch"): uncrouch()
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user