Implement Frag System #25
BIN
assets/models/character/y-bot/Y-Bot.glb
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/Y-Bot.glb
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/models/character/y-bot/Y-Bot.glb.import
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/Y-Bot.glb.import
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/models/character/y-bot/model.blend
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/model.blend
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/models/character/y-bot/model.blend1
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/model.blend1
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/models/character/y-bot/model.glb
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/model.glb
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/models/character/y-bot/model.glb.import
(Stored with Git LFS)
Normal file
BIN
assets/models/character/y-bot/model.glb.import
(Stored with Git LFS)
Normal file
Binary file not shown.
12
docs/characters.md
Normal file
12
docs/characters.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Characters
|
||||
|
||||
## Implementation
|
||||
|
||||
Characater is a 3D model (currently based on Mixamo) that must implement certain methods in order to become a "Character".
|
||||
Currently, each character must be able to detect collisions, pass the information about the take damage to its parent controller and dissapear when dying.
|
||||
|
||||
|
||||
## How to add a new character?
|
||||
|
||||
- Import a mixamo model in the scale of 0.01 in a T-Pose and make it local (Node should be names `model`)
|
||||
- Attach a character script to the main node
|
@ -39,6 +39,7 @@ import/blender/enabled=false
|
||||
body=""
|
||||
target=""
|
||||
player_placeholder=""
|
||||
ghost=""
|
||||
|
||||
[input]
|
||||
|
||||
@ -92,6 +93,21 @@ crouch={
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
weapon_slot_1={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
weapon_slot_2={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
weapon_slot_3={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":51,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[layer_names]
|
||||
|
||||
|
@ -105,8 +105,8 @@ impl PlayerServerNode {
|
||||
};
|
||||
let args = &[
|
||||
casted_bullet_node.to_variant(),
|
||||
10.to_variant(),
|
||||
10.to_variant(),
|
||||
200.to_variant(),
|
||||
50.to_variant(),
|
||||
];
|
||||
map.call("spawn_bullet", args);
|
||||
}
|
||||
|
39
scenes/_test/ragdoll/animated_skel.gd
Normal file
39
scenes/_test/ragdoll/animated_skel.gd
Normal file
@ -0,0 +1,39 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
|
||||
const SPEED = 5.0
|
||||
const JUMP_VELOCITY = 4.5
|
||||
var physics_bones: Array[Node]
|
||||
|
||||
func _ready() -> void:
|
||||
var anim: AnimationPlayer = $Base/model/AnimationPlayer
|
||||
anim.play("riffle_idle")
|
||||
var skel_ph: PhysicalBoneSimulator3D = $Base/model/Body/Skeleton3D/PhysicalBoneSimulator3D
|
||||
physics_bones = skel_ph.get_children().filter(func(x): return x is PhysicalBone3D)
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
var anim: AnimationPlayer = $Base/model/AnimationPlayer
|
||||
anim.stop()
|
||||
|
||||
var skel_ph: PhysicalBoneSimulator3D = $Base/model/Body/Skeleton3D/PhysicalBoneSimulator3D
|
||||
var target_skeleton = $Base/model/Body/Skeleton3D
|
||||
for b: PhysicalBone3D in physics_bones:
|
||||
#var target_transforms: Vector3 = target_skeleton.global_position * target_skeleton.get_bone_global_pose(b.get_bone_id())
|
||||
print(target_skeleton.to_global(target_skeleton.get_bone_global_pose(b.get_bone_id()).origin))
|
||||
b.global_position = target_skeleton.to_global(target_skeleton.get_bone_global_pose(b.get_bone_id()).origin)
|
||||
skel_ph.physical_bones_start_simulation()
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
for b: PhysicalBone3D in physics_bones:
|
||||
var target_skeleton = $Base/model/Body/Skeleton3D
|
||||
#var target_transforms: Vector3 = target_skeleton.global_position * target_skeleton.get_bone_global_pose(b.get_bone_id())
|
||||
print(target_skeleton.to_global(target_skeleton.get_bone_global_pose(b.get_bone_id()).origin))
|
||||
b.global_position = target_skeleton.to_global(target_skeleton.get_bone_global_pose(b.get_bone_id()).origin)
|
||||
|
||||
# Add the gravity.
|
||||
if not is_on_floor():
|
||||
velocity += get_gravity() * delta
|
||||
|
||||
move_and_slide()
|
13
scenes/_test/ragdoll/character.gd
Normal file
13
scenes/_test/ragdoll/character.gd
Normal file
@ -0,0 +1,13 @@
|
||||
extends Node3D
|
||||
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
$"Y-Bot/AnimationPlayer".play("T-Pose")
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
31
scenes/_test/ragdoll/physics_man_skel.gd
Normal file
31
scenes/_test/ragdoll/physics_man_skel.gd
Normal file
@ -0,0 +1,31 @@
|
||||
extends Skeleton3D
|
||||
|
||||
@onready var physical_bone_sim = $PhysicalBoneSimulator3D
|
||||
var physics_bones: Array[Node]
|
||||
@export var target_skeleton: Skeleton3D = null
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
|
||||
func _ready() -> void:
|
||||
physics_bones = physical_bone_sim.get_children().filter(func(x): return x is PhysicalBone3D)
|
||||
physical_bone_sim.physical_bones_start_simulation()
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func die() -> void:
|
||||
for b: PhysicalBone3D in physics_bones:
|
||||
#var target_transforms: Vector3 = target_skeleton.global_position * target_skeleton.get_bone_global_pose(b.get_bone_id())
|
||||
b.global_position = target_skeleton.to_global(target_skeleton.get_bone_global_pose(b.get_bone_id()).origin)
|
||||
#var current_transforn: Transform3D = global_transform * get_bone_global_pose(b.get_bone_id())
|
||||
#var position_difference: Vector3 = target_transforms.origin - current_transforn.origin
|
||||
#var force: Vector3 = hookes_law(position_difference, b.linear_velocity, 200.0, 40.0)
|
||||
#b.linear_velocity += force * delta
|
||||
#
|
||||
#var rotation_difference: Basis = target_transforms.basis * current_transforn.basis.inverse()
|
||||
#var torgue = hookes_law(rotation_difference.get_euler(), b.angular_velocity, 200.0, 40.0)
|
||||
#b.angular_velocity += torgue * delta
|
||||
|
||||
func hookes_law(dis: Vector3, cur_vel: Vector3, stif: float, damp: float):
|
||||
return (stif * dis) - (damp * cur_vel)
|
12
scenes/_test/ragdoll/skeleton_3d.gd
Normal file
12
scenes/_test/ragdoll/skeleton_3d.gd
Normal file
@ -0,0 +1,12 @@
|
||||
extends Skeleton3D
|
||||
|
||||
@export var target_skeleton: Skeleton3D
|
||||
var physical_bones
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
31
scenes/_test/ragdoll/test_ragdoll.tscn
Normal file
31
scenes/_test/ragdoll/test_ragdoll.tscn
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c3h6gm254tuoc"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/_test/ragdoll/animated_skel.gd" id="2_14gej"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgb3r24su3er2" path="res://scenes/characters/base/base.tscn" id="2_vodd8"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_vwp6f"]
|
||||
height = 1.6
|
||||
|
||||
[node name="TestRagdoll" type="Node3D"]
|
||||
|
||||
[node name="Body" type="CharacterBody3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1.33032, 1.47238, 0)
|
||||
collision_layer = 2
|
||||
script = ExtResource("2_14gej")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Body"]
|
||||
transform = Transform3D(1.06005, 0, 0, 0, 1.06005, 0, 0, 0, 1.06005, 0, 0.799564, 0)
|
||||
shape = SubResource("CapsuleShape3D_vwp6f")
|
||||
|
||||
[node name="Base" parent="Body" instance=ExtResource("2_vodd8")]
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
use_collision = true
|
||||
collision_layer = 17
|
||||
size = Vector3(10, 0.5, 10)
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.16491, 0.986309, 0, -0.986309, 0.16491, 0, 3.4524, 0)
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(0.999981, -0.00165754, 0.00588508, 0.00118019, 0.996777, 0.0802076, -0.00599906, -0.0801992, 0.996761, 1.27162, 2.37388, 2.16416)
|
1
scenes/autoload/game_server_controller_instance.gd
Normal file
1
scenes/autoload/game_server_controller_instance.gd
Normal file
@ -0,0 +1 @@
|
||||
extends GameServerController
|
11
scenes/characters/base/armature.gd
Normal file
11
scenes/characters/base/armature.gd
Normal file
@ -0,0 +1,11 @@
|
||||
extends Node3D
|
||||
|
||||
|
||||
# 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: float) -> void:
|
||||
pass
|
File diff suppressed because one or more lines are too long
@ -4,7 +4,7 @@ extends Node3D
|
||||
var owner_placeholder: CharacterBody3D = null
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
$Body/Armature/Skeleton3D.physical_bones_start_simulation()
|
||||
#$Body/Armature/Skeleton3D.physical_bones_start_simulation()
|
||||
owner_placeholder = _get_owner()
|
||||
pass # Replace with function body.
|
||||
|
||||
@ -21,9 +21,11 @@ func _on_head_collision_body_part_hit(dam: Variant) -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
func _hit_detected(dam: Variant) -> void:
|
||||
print("hit detected")
|
||||
if owner_placeholder:
|
||||
owner_placeholder.take_damage(dam)
|
||||
if owner_placeholder.has_method("take_damage"):
|
||||
owner_placeholder.take_damage(dam)
|
||||
else:
|
||||
print("Don't know how to hit")
|
||||
|
||||
func _get_owner() -> CharacterBody3D:
|
||||
var owner_placeholder := find_parent("PlayerPlaceholder*")
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=27 format=4 uid="uid://1txob6jskn5s"]
|
||||
[gd_scene load_steps=28 format=4 uid="uid://1txob6jskn5s"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/characters/blue/dummy.gd" id="1_cyeub"]
|
||||
[ext_resource type="Script" path="res://scenes/characters/blue/hit_collision.gd" id="2_jsfjb"]
|
||||
@ -267,8 +267,8 @@ radius = 3.944
|
||||
height = 12.926
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1gw5y"]
|
||||
radius = 10.779
|
||||
height = 24.58
|
||||
radius = 10.7
|
||||
height = 24.6
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_krlof"]
|
||||
radius = 2.74047
|
||||
@ -321,6 +321,10 @@ radius = 1.75
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_wnhib"]
|
||||
radius = 1.2
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ycdvn"]
|
||||
radius = 11.096
|
||||
height = 30.138
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6g1lc"]
|
||||
resource_name = "Run Forward"
|
||||
length = 0.533333
|
||||
@ -935,6 +939,8 @@ script = ExtResource("1_cyeub")
|
||||
transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, -0.01, 0, 0.01, -4.37114e-10, 0, 0, 0)
|
||||
|
||||
[node name="Skeleton3D" type="Skeleton3D" parent="Body/Armature" groups=["target"]]
|
||||
modifier_callback_mode_process = 0
|
||||
animate_physical_bones = false
|
||||
bones/0/name = "mixamorig_Hips"
|
||||
bones/0/parent = -1
|
||||
bones/0/rest = Transform3D(1, -8.78096e-05, -2.78699e-06, 2.78699e-06, 0, 1, -8.78096e-05, -1, 0, -6.75701e-06, 4.84474e-05, -99.7919)
|
||||
@ -1403,64 +1409,72 @@ surface_material_override/0 = SubResource("StandardMaterial3D_j3emx")
|
||||
[node name="PhysicalBoneSimulator3D" type="PhysicalBoneSimulator3D" parent="Body/Armature/Skeleton3D" groups=["target"]]
|
||||
|
||||
[node name="Physical Bone mixamorig_Hips" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D" groups=["target"]]
|
||||
transform = Transform3D(82.5044, -54.0559, -16.4615, 55.0482, 83.4649, 1.81949, 12.756, -10.5629, 98.619, 1.315, 0.290637, -87.4646)
|
||||
transform = Transform3D(82.5044, -54.0559, -16.4615, 55.0482, 83.4649, 1.8195, 12.756, -10.5629, 98.619, 1.315, 0.29064, -87.4646)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.87147e-07, -2.00234e-08, 0.0499957)
|
||||
body_offset = Transform3D(100, -0.0695229, -0.0086199, -2.6226e-05, 12.2744, -99.2438, 0.0700493, 99.2438, 12.2744, 0.000459671, 4.96176, -0.613665)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.44603e-07, -1.76951e-08, 0.0499957)
|
||||
body_offset = Transform3D(100, -0.0695229, -0.00861943, -2.6226e-05, 12.2744, -99.2438, 0.0700493, 99.2438, 12.2744, 0.000465393, 4.96176, -0.613665)
|
||||
mass = 20.0
|
||||
bone_name = "mixamorig_Hips"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
joint_constraints/impulse_clamp = 0.0
|
||||
script = ExtResource("2_jsfjb")
|
||||
damage_multiplexer = 1.5
|
||||
body_part = "hips"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone mixamorig_Hips"]
|
||||
transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-10, 0.0161502, -2.32831e-11, 1.01774e-18)
|
||||
shape = SubResource("CapsuleShape3D_0ptuo")
|
||||
|
||||
[node name="Physical Bone mixamorig_Spine" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(80.9412, -58.546, -4.56915, 57.6046, 80.6695, -13.1964, 11.4119, 8.04927, 99.0201, 2.40599, 0.973749, -98.2036)
|
||||
transform = Transform3D(80.9412, -58.546, -4.56915, 57.6045, 80.6695, -13.1964, 11.4119, 8.04926, 99.0201, 2.40599, 0.973749, -98.2036)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.32957e-08, 4.52838e-09, 0.0586602)
|
||||
body_offset = Transform3D(100, 1.14441e-05, 9.05991e-06, 4.76837e-06, 2.67029e-05, -100, -1.52588e-05, 100, 2.47955e-05, -2.86102e-06, 5.86602, -1.90735e-06)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.46942e-08, 1.17182e-09, 0.0586602)
|
||||
body_offset = Transform3D(100, 2.28882e-05, 6.67572e-06, 1.43051e-06, 3.24249e-05, -100, -3.8147e-05, 100, 3.05176e-05, -2.86102e-06, 5.86602, -1.90735e-06)
|
||||
mass = 20.0
|
||||
bone_name = "mixamorig_Spine"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
joint_constraints/impulse_clamp = 0.0
|
||||
script = ExtResource("2_jsfjb")
|
||||
damage_multiplexer = 1.5
|
||||
body_part = "spine"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone mixamorig_Spine"]
|
||||
transform = Transform3D(0.0318071, 3.86358e-14, 4.9738e-14, -2.13163e-14, -1.62981e-09, 0.0318071, -4.26326e-14, -0.0318071, -1.62981e-09, -0.00245133, -5.91656e-09, -0.223859)
|
||||
shape = SubResource("CapsuleShape3D_126jt")
|
||||
|
||||
[node name="Physical Bone mixamorig_Head" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D" groups=["target"]]
|
||||
transform = Transform3D(-97.8019, 4.47329, 20.366, -15.8369, -79.4709, -58.5966, 13.5638, -60.5339, 78.4325, -13.8193, 23.4986, -143.635)
|
||||
transform = Transform3D(-97.8019, 4.47329, 20.366, -15.8368, -79.471, -58.5966, 13.5639, -60.5339, 78.4326, -13.8193, 23.4986, -143.635)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.79326e-07, 7.82311e-08, 0.0981532)
|
||||
body_offset = Transform3D(-100, -0.00219822, -0.000780106, -5.24521e-06, 33.8066, -94.1122, 0.00232792, -94.1122, -33.8067, 4.86374e-05, 9.23741, 3.31824)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.1186e-07, 1.08033e-07, 0.0981535)
|
||||
body_offset = Transform3D(-100, -0.00220776, -0.000774384, -1.52588e-05, 33.8066, -94.1122, 0.00233746, -94.1123, -33.8066, 4.48227e-05, 9.23744, 3.31825)
|
||||
mass = 7.0
|
||||
bone_name = "mixamorig_Head"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
joint_constraints/impulse_clamp = 0.0
|
||||
script = ExtResource("2_jsfjb")
|
||||
damage_multiplexer = 2.0
|
||||
body_part = "head"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D/Physical Bone mixamorig_Head" groups=["target"]]
|
||||
transform = Transform3D(0.0099, 2.91038e-10, 0, -3.49246e-10, 9.31323e-10, 0.0099, 1.16415e-10, -0.0099, 4.65661e-10, 0, 0, 0)
|
||||
transform = Transform3D(0.0099, 0, 0, 0, 0.0099, 0, 0, 0, 0.0099, 0, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_1gw5y")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftArm" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(86.1165, 14.0252, -48.8594, -45.4995, 64.1262, -61.787, 22.6659, 75.4396, 61.6046, 16.1942, 31.0309, -132.592)
|
||||
transform = Transform3D(86.1165, 14.0252, -48.8594, -45.4995, 64.1262, -61.787, 22.666, 75.4395, 61.6046, 16.1942, 31.0309, -132.592)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.78517e-08, 1.63042e-07, 0.137023)
|
||||
body_offset = Transform3D(100, -6.67572e-05, -2.67029e-05, 5.91278e-05, 100, -7.62939e-06, 2.28882e-05, 7.62939e-06, 100, 1.14441e-05, -1.52588e-05, -13.7023)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.81838e-07, 2.39336e-07, 0.137023)
|
||||
body_offset = Transform3D(100, -9.72748e-05, -3.43323e-05, 8.96454e-05, 100, -7.62939e-06, 1.90735e-05, 3.8147e-06, 100, 2.28882e-05, -2.28882e-05, -13.7023)
|
||||
mass = 3.0
|
||||
bone_name = "mixamorig_LeftArm"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1476,8 +1490,8 @@ transform = Transform3D(-48.2566, -12.058, 86.752, -78.7312, -37.4258, -48.997,
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.52414e-07, -1.05341e-08, 0.138072)
|
||||
body_offset = Transform3D(100, 3.05176e-05, -4.19617e-05, -3.8147e-05, 0, -100, -3.8147e-06, 100, 7.62939e-06, 6.10352e-05, 13.8072, 0)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.57681e-07, -1.84345e-08, 0.138072)
|
||||
body_offset = Transform3D(100, 1.14441e-05, -3.8147e-05, -3.8147e-05, 3.8147e-06, -100, 1.33514e-05, 100, 1.33514e-05, 6.10352e-05, 13.8072, 0)
|
||||
mass = 3.0
|
||||
bone_name = "mixamorig_LeftForeArm"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1489,12 +1503,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_2k34c")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftHand" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(9.11563, -98.6768, 13.4089, 23.9481, -10.8976, -96.4766, 96.6612, 12.0056, 22.6379, -10.9684, 56.2242, -106.442)
|
||||
transform = Transform3D(9.11562, -98.6768, 13.4088, 23.9481, -10.8976, -96.4766, 96.6612, 12.0056, 22.6379, -10.9684, 56.2241, -106.442)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.86265e-09, -4.19095e-09, 0.0264902)
|
||||
body_offset = Transform3D(-58.5197, 57.9894, 56.6805, 2.28882e-05, 69.899, -71.5132, -81.0891, -41.8493, -40.9047, -1.50148, 1.8944, 1.08357)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.45058e-08, -1.15018e-07, 0.0264901)
|
||||
body_offset = Transform3D(-58.5197, 57.9894, 56.6805, 1.52588e-05, 69.899, -71.5132, -81.0891, -41.8493, -40.9047, -1.50147, 1.8944, 1.08356)
|
||||
bone_name = "mixamorig_LeftHand"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
@ -1505,12 +1519,12 @@ transform = Transform3D(0.01, 0, 0, 0, 0.00697578, 0.00716509, 0, -0.00716509, 0
|
||||
shape = SubResource("CapsuleShape3D_5fgdh")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightArm" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(30.7246, 72.8896, 61.1809, 93.7855, -34.092, -6.48191, 16.1331, 59.3704, -78.8345, -27.5296, -1.29566, -110.13)
|
||||
transform = Transform3D(30.7246, 72.8896, 61.1809, 93.7855, -34.092, -6.48191, 16.1331, 59.3704, -78.8345, -27.5296, -1.29565, -110.13)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.43743e-08, 1.22206e-07, 0.137023)
|
||||
body_offset = Transform3D(100, -5.72205e-06, 1.04904e-05, 6.67572e-06, 6.67572e-06, -100, -1.90735e-06, 100, 2.21729e-05, 0, 13.7023, -1.52588e-05)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.03082e-07, 4.39518e-08, 0.137023)
|
||||
body_offset = Transform3D(100, -1.90735e-06, 1.95503e-05, 1.52588e-05, 6.91414e-06, -100, -3.8147e-06, 100, 2.36034e-05, 7.62939e-06, 13.7023, -7.62939e-06)
|
||||
mass = 3.0
|
||||
bone_name = "mixamorig_RightArm"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1522,12 +1536,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_8vkyv")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightForeArm" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(24.3552, 37.4063, 89.4851, -25.0101, 91.5653, -31.4688, -93.7087, -14.716, 31.6563, -48.2682, 3.9375, -103.698)
|
||||
transform = Transform3D(24.3552, 37.4063, 89.4852, -25.0101, 91.5653, -31.4688, -93.7087, -14.716, 31.6563, -48.2682, 3.93752, -103.698)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.64439e-07, -1.82153e-07, 0.138072)
|
||||
body_offset = Transform3D(100, 1.71661e-05, -8.58307e-06, -3.24249e-05, 100, 2.09808e-05, 3.00407e-05, -2.28882e-05, 100, -1.52588e-05, 1.53184e-05, -13.8072)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.2944e-07, -2.55922e-07, 0.138072)
|
||||
body_offset = Transform3D(100, 1.52588e-05, -3.09944e-05, -2.86102e-05, 100, 3.8147e-05, 4.24385e-05, -3.8147e-05, 100, -6.86646e-05, 2.03252e-05, -13.8072)
|
||||
mass = 3.0
|
||||
bone_name = "mixamorig_RightForeArm"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1539,12 +1553,12 @@ transform = Transform3D(0.01, 0, 0, 0, 0.00999714, -0.000239087, 0, 0.000239087,
|
||||
shape = SubResource("CapsuleShape3D_fh1k4")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightHand" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(89.0767, -24.8074, -38.0781, 5.05123, 88.6726, -45.9527, 45.1645, 39.0097, 80.2397, -24.5745, 26.0951, -105.517)
|
||||
transform = Transform3D(89.0767, -24.8074, -38.0781, 5.05123, 88.6727, -45.9527, 45.1645, 39.0097, 80.2397, -24.5745, 26.0951, -105.517)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.0396e-07, 3.1013e-07, 0.0264904)
|
||||
body_offset = Transform3D(-58.5197, -57.9893, -56.6805, -1.33514e-05, 69.8991, -71.5131, 81.0891, -41.8492, -40.9048, 1.5015, 1.89439, 1.08361)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.14787e-07, 3.66941e-07, 0.0264904)
|
||||
body_offset = Transform3D(-58.5197, -57.9893, -56.6806, -9.05991e-06, 69.8991, -71.5131, 81.0891, -41.8492, -40.9048, 1.5015, 1.89439, 1.08363)
|
||||
bone_name = "mixamorig_RightHand"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
@ -1555,12 +1569,12 @@ transform = Transform3D(0.01, 0, 0, 0, 0.00693402, 0.00720551, 0, -0.00720551, 0
|
||||
shape = SubResource("CapsuleShape3D_1m8r5")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftUpLeg" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-96.1774, -26.2683, 7.73899, -23.4202, 64.2555, -72.957, 14.1919, -71.9806, -67.9513, 5.83709, 19.601, -60.9754)
|
||||
transform = Transform3D(-96.1774, -26.2683, 7.73898, -23.4202, 64.2555, -72.957, 14.1918, -71.9806, -67.9513, 5.83709, 19.601, -60.9754)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.40401e-07, 1.12726e-07, 0.202997)
|
||||
body_offset = Transform3D(100, -7.34329e-05, 2.47955e-05, 2.09808e-05, 6.10352e-05, -100, 7.53403e-05, 100, 5.72205e-05, -1.90735e-05, 20.2997, -2.28882e-05)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.09712e-07, 3.11205e-07, 0.202997)
|
||||
body_offset = Transform3D(100, -8.39233e-05, 3.05176e-05, 2.67029e-05, 5.72205e-05, -100, 8.96454e-05, 100, 5.34058e-05, -1.71661e-05, 20.2997, -4.19617e-05)
|
||||
mass = 5.0
|
||||
bone_name = "mixamorig_LeftUpLeg"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1576,8 +1590,8 @@ transform = Transform3D(-97.5216, -11.6193, -18.8291, -22.0483, 58.1427, 78.3154
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.01575e-09, -1.30455e-08, 0.210495)
|
||||
body_offset = Transform3D(100, 2.86102e-06, 1.14441e-05, 5.72205e-06, 0, -100, -9.53674e-07, 100, 1.52588e-05, -1.90735e-06, 21.0495, -1.90735e-06)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.76408e-08, -8.02975e-08, 0.210495)
|
||||
body_offset = Transform3D(100, 2.86102e-06, 1.33514e-05, 5.72205e-06, 2.28882e-05, -100, -9.53674e-07, 100, 3.8147e-05, 9.53674e-07, 21.0495, 0)
|
||||
mass = 5.0
|
||||
bone_name = "mixamorig_LeftLeg"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1589,12 +1603,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_vwdij")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftFoot" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-93.6712, -34.5296, 5.78095, -34.9451, 91.207, -21.4506, 2.1342, -22.1132, -97.501, 11.7385, 3.12728, -14.5678)
|
||||
transform = Transform3D(-93.6711, -34.5297, 5.78095, -34.9451, 91.207, -21.4506, 2.1342, -22.1132, -97.501, 11.7385, 3.12728, -14.5678)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.45754e-08, 1.53424e-07, 0.0786083)
|
||||
body_offset = Transform3D(100, 3.05176e-05, 5.72205e-06, 6.67572e-06, -3.05176e-05, -100, -2.28882e-05, 100, -4.95911e-05, -1.90735e-06, 7.86083, -1.14441e-05)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.06569e-07, 1.98453e-07, 0.0786085)
|
||||
body_offset = Transform3D(100, 4.19617e-05, 1.00136e-05, 9.53674e-06, -3.62396e-05, -100, -3.8147e-05, 100, -5.53131e-05, -1.14441e-05, 7.86085, -1.54972e-05)
|
||||
bone_name = "mixamorig_LeftFoot"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
@ -1605,12 +1619,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_qyg6j")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightUpLeg" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-83.6898, -51.5224, 18.4786, -50.5592, 59.8312, -62.161, 20.9708, -61.3651, -76.122, -11.4062, 7.37456, -61.646)
|
||||
transform = Transform3D(-83.6898, -51.5224, 18.4786, -50.5593, 59.8312, -62.161, 20.9708, -61.3651, -76.1219, -11.4062, 7.37456, -61.646)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.86102e-08, 1.54874e-08, 0.202997)
|
||||
body_offset = Transform3D(100, -1.52588e-05, 0, 5.72205e-06, -1.14441e-05, -100, 1.14441e-05, 100, -7.62939e-06, -2.86102e-06, 20.2997, 0)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.92993e-08, 1.00668e-07, 0.202997)
|
||||
body_offset = Transform3D(100, -1.14441e-05, -5.72205e-06, -5.72205e-06, -4.95911e-05, -100, -3.8147e-06, 100, -4.95911e-05, -4.76837e-06, 20.2997, 0)
|
||||
mass = 5.0
|
||||
bone_name = "mixamorig_RightUpLeg"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1622,12 +1636,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_a81km")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightLeg" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-91.8175, -23.5086, -31.8888, -36.0102, 83.0805, 42.437, 16.517, 50.4478, -84.7479, -8.44487, 11.0604, -28.3544)
|
||||
transform = Transform3D(-91.8175, -23.5085, -31.8888, -36.0102, 83.0805, 42.437, 16.517, 50.4478, -84.7479, -8.44486, 11.0604, -28.3544)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.47925e-08, -3.73912e-07, 0.210495)
|
||||
body_offset = Transform3D(100, -4.95911e-05, 1.43051e-05, 2.86102e-06, 6.86646e-05, -100, 5.72205e-05, 100, 9.15527e-05, -1.04904e-05, 21.0495, 1.81198e-05)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.52464e-07, -3.77421e-07, 0.210495)
|
||||
body_offset = Transform3D(100, -0.000101089, 5.72205e-06, -5.72205e-06, 8.7738e-05, -100, 0.000110626, 100, 0.000106812, -1.64509e-05, 21.0495, 1.52588e-05)
|
||||
mass = 5.0
|
||||
bone_name = "mixamorig_RightLeg"
|
||||
joint_constraints/bias = 0.3
|
||||
@ -1639,12 +1653,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CylinderShape3D_2binp")
|
||||
|
||||
[node name="Physical Bone mixamorig_RightFoot" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D" groups=["target"]]
|
||||
transform = Transform3D(-88.192, -17.3351, 43.8368, -46.8549, 42.4443, -77.4796, -5.17505, -88.8705, -45.5549, -5.17837, 8.21811, -6.93437)
|
||||
transform = Transform3D(-88.192, -17.3351, 43.8368, -46.8549, 42.4443, -77.4797, -5.17505, -88.8706, -45.5548, -5.17838, 8.21811, -6.93438)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.24152e-08, 3.328e-08, 0.078608)
|
||||
body_offset = Transform3D(100, 1.14441e-05, -7.62939e-06, -7.62939e-06, -7.62939e-05, -100, 0, 100, -0.000102997, 5.84126e-06, 7.8608, 4.76837e-06)
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.45649e-08, 4.31115e-08, 0.078608)
|
||||
body_offset = Transform3D(100, 1.71661e-05, -1.52588e-05, -1.52588e-05, -0.000137329, -100, -5.72205e-06, 100, -0.000164032, 9.65595e-06, 7.8608, 8.58307e-06)
|
||||
bone_name = "mixamorig_RightFoot"
|
||||
joint_constraints/bias = 0.3
|
||||
joint_constraints/damping = 1.0
|
||||
@ -1658,6 +1672,14 @@ shape = SubResource("CylinderShape3D_l2il6")
|
||||
transform = Transform3D(9.83936, 0.264962, 1.76546, 0.249217, 9.58855, -2.82801, -1.76775, 2.82658, 9.42791, -12.7207, 21.3283, -142.579)
|
||||
shape = SubResource("SphereShape3D_wnhib")
|
||||
|
||||
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Body/Armature/Skeleton3D"]
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="Body/Armature/Skeleton3D/BoneAttachment3D"]
|
||||
transform = Transform3D(1, 0, -4.23516e-22, 0, 1, 0, 8.47033e-22, 0, 1, -7.01829e-20, -5.93397e-06, -135.753)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/Armature/Skeleton3D/BoneAttachment3D/Area3D"]
|
||||
shape = SubResource("CapsuleShape3D_ycdvn")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Body"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_dbxeu")
|
||||
|
@ -1,6 +1,7 @@
|
||||
extends PhysicalBone3D
|
||||
|
||||
@export var damage_multiplexer: float = 1.0
|
||||
@export var body_part: String = ""
|
||||
|
||||
signal body_part_hit(damage: int)
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@ -12,6 +13,6 @@ func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func hit(base_damage: int):
|
||||
print("HEAD")
|
||||
print("got hit in " + body_part)
|
||||
var final_damage = round(base_damage * damage_multiplexer)
|
||||
$"../../../../.."._hit_detected(final_damage)
|
||||
|
33
scenes/characters/character_wrapper.gd
Normal file
33
scenes/characters/character_wrapper.gd
Normal file
@ -0,0 +1,33 @@
|
||||
extends Node
|
||||
class_name CharacterWrapper
|
||||
|
||||
@export var die_script: GDScript = null
|
||||
var owner_placeholder: Node3D = null
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
# Characters should be always controlled by the server and synced accross client
|
||||
# The owner should be responsible for the syncronization, since this node is
|
||||
# just a dummy that is following the controller
|
||||
set_multiplayer_authority(1)
|
||||
|
||||
pass # Replace with function body.
|
||||
|
||||
# Set the owner placeholder, so the characters can send the requests to a node
|
||||
# it depends on
|
||||
func set_owner_placeholder(owner: Node3D):
|
||||
owner_placeholder = owner
|
||||
|
||||
func die():
|
||||
push_warning("TODO: Implement ragdoll kind of dying and respawn character as an object")
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_area_body_part_hit(damage: int) -> void:
|
||||
# The owner node should be aware of how to take damage, so we need to
|
||||
# pass the value.
|
||||
if owner_placeholder:
|
||||
if owner_placeholder.has_method("take_damage"):
|
||||
owner_placeholder.take_damage(damage)
|
||||
else:
|
||||
push_warning("Node doesn't know how to take the damage")
|
File diff suppressed because one or more lines are too long
@ -1,7 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://dv23lxk4hr8io"]
|
||||
|
||||
[node name="FirstViewGenericGun" type="Node3D"]
|
||||
|
||||
[node name="TestCamera" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.49377, 1.45724, 5.45639)
|
||||
fov = 40.0
|
13
scenes/characters/hit_detected.gd
Normal file
13
scenes/characters/hit_detected.gd
Normal file
@ -0,0 +1,13 @@
|
||||
extends Area3D
|
||||
|
||||
@export var damage_multiplexer: float = 1.0
|
||||
@export var body_part: String = ""
|
||||
|
||||
signal body_part_hit(damage: int)
|
||||
|
||||
func _ready() -> void:
|
||||
add_to_group("target")
|
||||
|
||||
func hit(base_damage: int):
|
||||
var final_damage = round(base_damage * damage_multiplexer)
|
||||
body_part_hit.emit(final_damage)
|
@ -1,186 +0,0 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://b10lpwfjgxds4"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/player/player_input_controller.gd" id="1_q75ai"]
|
||||
[ext_resource type="Texture2D" uid="uid://oopj5mj1vdp0" path="res://assets/crosshairs/crosshair_default.png" id="2_lsd7c"]
|
||||
[ext_resource type="Script" path="res://scenes/characters/player_input_controller.gd" id="3_n3epd"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jc50w"]
|
||||
margin = 0.5
|
||||
radius = 0.4
|
||||
height = 1.6
|
||||
|
||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tl74a"]
|
||||
properties/0/path = NodePath(".:position")
|
||||
properties/0/spawn = true
|
||||
properties/0/replication_mode = 1
|
||||
properties/1/path = NodePath(".:rotation")
|
||||
properties/1/spawn = true
|
||||
properties/1/replication_mode = 1
|
||||
properties/2/path = NodePath(".:health")
|
||||
properties/2/spawn = true
|
||||
properties/2/replication_mode = 2
|
||||
properties/3/path = NodePath(".:velocity")
|
||||
properties/3/spawn = true
|
||||
properties/3/replication_mode = 1
|
||||
properties/4/path = NodePath(".:owner_id")
|
||||
properties/4/spawn = true
|
||||
properties/4/replication_mode = 1
|
||||
|
||||
[sub_resource type="Animation" id="Animation_falg4"]
|
||||
length = 0.001
|
||||
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.125),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_mkk0p"]
|
||||
resource_name = "move"
|
||||
length = 0.5
|
||||
loop_mode = 1
|
||||
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.125, 0.25, 0.375, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 2, 1, 2, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0.001, 0.001, -0.001), Vector3(0, 0, 0), Vector3(-0.001, 0.001, -0.001), Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ah507"]
|
||||
resource_name = "shooting"
|
||||
length = 0.2
|
||||
loop_mode = 1
|
||||
step = 0.1
|
||||
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.1, 0.2),
|
||||
"transitions": PackedFloat32Array(1, 0.233258, 8.57419),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, -0.01, -0.01), Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_u1b6p"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_falg4"),
|
||||
"move": SubResource("Animation_mkk0p"),
|
||||
"shooting": SubResource("Animation_ah507")
|
||||
}
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_toaij"]
|
||||
font_size = 70
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_1j1uq"]
|
||||
font_size = 100
|
||||
font_color = Color(0.756874, 0, 0.223924, 1)
|
||||
|
||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_eour5"]
|
||||
properties/0/path = NodePath(".:input_direction")
|
||||
properties/0/spawn = false
|
||||
properties/0/replication_mode = 2
|
||||
properties/1/path = NodePath(".:jumping")
|
||||
properties/1/spawn = false
|
||||
properties/1/replication_mode = 2
|
||||
|
||||
[node name="CharacterPlaceholder" type="CharacterBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.799455, 0)
|
||||
collision_layer = 9
|
||||
collision_mask = 9
|
||||
script = ExtResource("1_q75ai")
|
||||
|
||||
[node name="Collision" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0150437, 0)
|
||||
shape = SubResource("CapsuleShape3D_jc50w")
|
||||
|
||||
[node name="PlayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
|
||||
replication_config = SubResource("SceneReplicationConfig_tl74a")
|
||||
|
||||
[node name="FirstPersonCameraMount" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.609154, -0.209324)
|
||||
|
||||
[node name="Camera" type="Camera3D" parent="FirstPersonCameraMount"]
|
||||
fov = 60.0
|
||||
|
||||
[node name="BulletStartingPoint" type="Node3D" parent="FirstPersonCameraMount"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.42185)
|
||||
|
||||
[node name="AimRay" type="RayCast3D" parent="FirstPersonCameraMount/BulletStartingPoint"]
|
||||
target_position = Vector3(0, 0, 1000)
|
||||
hit_from_inside = true
|
||||
collide_with_areas = true
|
||||
|
||||
[node name="GunMount" type="Node3D" parent="FirstPersonCameraMount"]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="FirstPersonCameraMount/GunMount"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_u1b6p")
|
||||
}
|
||||
|
||||
[node name="HUD" type="Control" parent="FirstPersonCameraMount"]
|
||||
visible = false
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 8.0
|
||||
offset_right = 8.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="FirstPersonCameraMount/HUD"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -36.0
|
||||
offset_top = -36.0
|
||||
offset_right = 36.0
|
||||
offset_bottom = 36.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("2_lsd7c")
|
||||
|
||||
[node name="HealthIndicator" type="Label" parent="FirstPersonCameraMount/HUD"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 2
|
||||
anchor_top = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -23.0
|
||||
offset_right = 40.0
|
||||
grow_vertical = 0
|
||||
text = "100"
|
||||
label_settings = SubResource("LabelSettings_toaij")
|
||||
|
||||
[node name="FPS" type="Label" parent="FirstPersonCameraMount/HUD" groups=["player_placeholder"]]
|
||||
layout_mode = 1
|
||||
offset_right = 40.0
|
||||
offset_bottom = 23.0
|
||||
text = "0"
|
||||
label_settings = SubResource("LabelSettings_1j1uq")
|
||||
|
||||
[node name="ModelMount" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.790262, 0)
|
||||
|
||||
[node name="PlayerInput" type="MultiplayerSynchronizer" parent="."]
|
||||
root_path = NodePath(".")
|
||||
replication_config = SubResource("SceneReplicationConfig_eour5")
|
||||
script = ExtResource("3_n3epd")
|
@ -1,35 +0,0 @@
|
||||
extends MultiplayerSynchronizer
|
||||
|
||||
@export var jumping := false
|
||||
@export var input_direction := Vector2()
|
||||
|
||||
@onready var camera_mount = $"../FirstPersonCameraMount"
|
||||
@onready var placeholder = $".."
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
#set_process(get_multiplayer_authority() == multiplayer.get_unique_id())
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
# Add the gravity.
|
||||
if multiplayer.get_unique_id() == get_multiplayer_authority():
|
||||
input_direction = Input.get_vector("move_left", "move_right", "move_forward", "move_backwards")
|
||||
set_input_direction.rpc(input_direction)
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
jump.rpc_id(1)
|
||||
|
||||
var camera_sens: float = 0.002
|
||||
func _input(event):
|
||||
if multiplayer.get_unique_id() == get_multiplayer_authority():
|
||||
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
placeholder.rotate_y(-event.relative.x * camera_sens)
|
||||
|
||||
|
||||
@rpc("any_peer", "call_local", "reliable")
|
||||
func set_input_direction(direction: Vector2):
|
||||
input_direction = direction
|
||||
|
||||
@rpc("any_peer", "call_local", "reliable")
|
||||
func jump():
|
||||
jumping = true
|
File diff suppressed because one or more lines are too long
@ -4,10 +4,12 @@ class_name MapController extends Node
|
||||
const PLAYER_SPAWNER: String = "res://scenes/maps/base/player_spawner/player_spawner.tscn"
|
||||
const OBJECT_SPAWNER: String = "res://scenes/maps/base/object_spawner/object_spawner.tscn"
|
||||
const BULLET_SPAWNER: String = "res://scenes/maps/base/bullet_spawner/bullet_spawner.tscn"
|
||||
const NPC_SPAWNER: String = "res://scenes/maps/base/npc_spawner/npc_spawner.tscn"
|
||||
|
||||
var player_spawner: PlayerSpawnerController
|
||||
var object_spawner: Node3D
|
||||
var bullet_spawner: BulletSpawnerController
|
||||
var npc_spawner: Node3D
|
||||
@onready var spawn_locations: SpawnController = $SpawnLocations
|
||||
|
||||
func _on_player_connected(id):
|
||||
@ -89,6 +91,17 @@ func _add_bullet_spawner() -> Error :
|
||||
add_child(node)
|
||||
bullet_spawner = node
|
||||
return OK
|
||||
|
||||
func _add_npc_spawner() -> Error :
|
||||
if not ResourceLoader.exists(NPC_SPAWNER):
|
||||
return ERR_DOES_NOT_EXIST
|
||||
var scene: PackedScene = ResourceLoader.load(NPC_SPAWNER)
|
||||
if not scene.can_instantiate():
|
||||
return ERR_CANT_OPEN
|
||||
var node: Node3D = scene.instantiate()
|
||||
add_child(node)
|
||||
npc_spawner = node
|
||||
return OK
|
||||
|
||||
# -- TODO: Better bullet naming handler
|
||||
var bullet_amount: int = -2147483647
|
||||
|
8
scenes/maps/base/npc_spawner/npc_spawner.tscn
Normal file
8
scenes/maps/base/npc_spawner/npc_spawner.tscn
Normal file
@ -0,0 +1,8 @@
|
||||
[gd_scene format=3 uid="uid://bgb01iv0fekje"]
|
||||
|
||||
[node name="NpcSpawner" type="Node3D"]
|
||||
|
||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
|
||||
spawn_path = NodePath("../NPC")
|
||||
|
||||
[node name="NPC" type="Node3D" parent="."]
|
@ -1,9 +1,14 @@
|
||||
[gd_scene format=3 uid="uid://b0k17hibnhnv4"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b0k17hibnhnv4"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ddwrs0so7swxn" path="res://scenes/characters/y-bot/character.tscn" id="1_87hqt"]
|
||||
|
||||
[node name="ObjectSpawner" type="Node3D"]
|
||||
|
||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
|
||||
_spawnable_scenes = PackedStringArray("res://scenes/characters/y-bot/character.tscn")
|
||||
spawn_path = NodePath("../Objects")
|
||||
spawn_limit = 10000
|
||||
|
||||
[node name="Objects" type="Node3D" parent="."]
|
||||
|
||||
[node name="Character" parent="Objects" instance=ExtResource("1_87hqt")]
|
||||
|
File diff suppressed because one or more lines are too long
20
scenes/maps/tools/hit_detector.gd
Normal file
20
scenes/maps/tools/hit_detector.gd
Normal file
@ -0,0 +1,20 @@
|
||||
extends CSGBox3D
|
||||
class_name HitDetector
|
||||
|
||||
var health = 5
|
||||
|
||||
@export var color: Color = Color(0.0, 0.0, 0.0, 0)
|
||||
|
||||
func hit(damage: int):
|
||||
color = Color(randf(), randf(), randf(), randi())
|
||||
|
||||
# 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: float) -> void:
|
||||
material.albedo_color = color
|
||||
if health < 1:
|
||||
queue_free()
|
21
scenes/maps/tools/hit_detector.tscn
Normal file
21
scenes/maps/tools/hit_detector.tscn
Normal file
@ -0,0 +1,21 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cdcbn8mglqlyh"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/maps/tools/hit_detector.gd" id="1_4w4v8"]
|
||||
|
||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_8tws6"]
|
||||
properties/0/path = NodePath("Box:color")
|
||||
properties/0/spawn = true
|
||||
properties/0/replication_mode = 1
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r26tj"]
|
||||
|
||||
[node name="HitDetector" type="Node3D"]
|
||||
|
||||
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." groups=["target"]]
|
||||
replication_config = SubResource("SceneReplicationConfig_8tws6")
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="." groups=["target"]]
|
||||
use_collision = true
|
||||
collision_layer = 9
|
||||
material = SubResource("StandardMaterial3D_r26tj")
|
||||
script = ExtResource("1_4w4v8")
|
@ -1,6 +1,8 @@
|
||||
extends Node3D
|
||||
class_name PlayerPlaceholder
|
||||
|
||||
@export var health: int = 100
|
||||
@onready var character_node: CharacterWrapper = $ServerControlledNode/Character
|
||||
@export var owner_id: int = 0
|
||||
@export var initial_position: Vector3 = Vector3(0, 0, 0)
|
||||
# -- Components
|
||||
@ -8,8 +10,12 @@ class_name PlayerPlaceholder
|
||||
@onready var server_node: PlayerServerNode = $ServerControlledNode
|
||||
@export var character_speed: int = 5
|
||||
@onready var bullet_starting_poing: Node3D = $ServerControlledNode/BulletStartingPoint
|
||||
@export var default_weapon: String = "deagle"
|
||||
|
||||
|
||||
@export var weapon_slot_1: String = "ak"
|
||||
@export var weapon_slot_2: String = "deagle"
|
||||
@export var weapon_slot_3: String = ""
|
||||
@export var weapon_slot_4: String = ""
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@ -18,10 +24,14 @@ func _ready() -> void:
|
||||
$PlayerControlledNode/CameraMount.set_multiplayer_authority(owner_id)
|
||||
switch_players_camera.rpc_id(owner_id)
|
||||
server_node.global_position = initial_position
|
||||
character_node.set_owner_placeholder($".")
|
||||
client_node.global_position = server_node.global_position
|
||||
client_node.rotation.y = server_node.rotation.y
|
||||
client_node.rotation.x = server_node.rotation.x
|
||||
|
||||
client_node.set_default_weapon_meta.rpc_id(owner_id, 1, "ak")
|
||||
client_node.set_default_weapon_meta.rpc_id(owner_id, 2, "deagle")
|
||||
client_node.set_default_weapon_meta.rpc_id(owner_id, 3, "vector")
|
||||
client_node._preload_weapon.rpc_id(owner_id)
|
||||
if multiplayer.is_server():
|
||||
$Timer.start()
|
||||
if owner_id != multiplayer.get_unique_id():
|
||||
@ -30,7 +40,8 @@ func _ready() -> void:
|
||||
pass
|
||||
#client_node._add_legs_to_first_view()
|
||||
|
||||
|
||||
func _set_default_weapon():
|
||||
pass
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
#if desired_player_state.globa_position != real_player_state.globa_position:
|
||||
@ -39,7 +50,13 @@ func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
pass
|
||||
if character_node != null:
|
||||
if health < 1:
|
||||
character_node.die()
|
||||
character_node = null
|
||||
|
||||
func take_damage(damage: int):
|
||||
health -= damage
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func switch_players_camera():
|
||||
|
@ -3,8 +3,7 @@
|
||||
[ext_resource type="Script" path="res://scenes/player/player_input_controller.gd" id="1_m6tul"]
|
||||
[ext_resource type="Script" path="res://scenes/player/placeholder.gd" id="1_ts455"]
|
||||
[ext_resource type="Texture2D" uid="uid://oopj5mj1vdp0" path="res://assets/crosshairs/crosshair_default.png" id="3_8ulsx"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtvo21mk1webd" path="res://scenes/weapon/guns/ak/with_hands.tscn" id="3_xxv4y"]
|
||||
[ext_resource type="PackedScene" uid="uid://1txob6jskn5s" path="res://scenes/characters/blue/dummy.tscn" id="5_16l76"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddwrs0so7swxn" path="res://scenes/characters/y-bot/character.tscn" id="4_ewxcr"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_taqso"]
|
||||
radius = 0.4
|
||||
@ -17,6 +16,10 @@ font_size = 70
|
||||
font_size = 100
|
||||
font_color = Color(0.756874, 0, 0.223924, 1)
|
||||
|
||||
[sub_resource type="Environment" id="Environment_i2xeo"]
|
||||
sdfgi_enabled = true
|
||||
glow_enabled = true
|
||||
|
||||
[sub_resource type="Animation" id="Animation_falg4"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@ -103,6 +106,9 @@ properties/6/replication_mode = 1
|
||||
properties/7/path = NodePath("ServerControlledNode/BulletStartingPoint:rotation")
|
||||
properties/7/spawn = true
|
||||
properties/7/replication_mode = 1
|
||||
properties/8/path = NodePath(".:health")
|
||||
properties/8/spawn = true
|
||||
properties/8/replication_mode = 1
|
||||
|
||||
[node name="Placeholder" type="Node3D"]
|
||||
script = ExtResource("1_ts455")
|
||||
@ -184,8 +190,10 @@ size = Vector2i(1920, 1964)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="PlayerControlledNode/CameraMount/Camera3D/HUD/SubViewportContainer/SubViewport"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30409, -0.371306)
|
||||
cull_mask = 524288
|
||||
fov = 40.0
|
||||
environment = SubResource("Environment_i2xeo")
|
||||
fov = 50.0
|
||||
|
||||
[node name="GunMount" type="Node3D" parent="PlayerControlledNode/CameraMount/Camera3D/HUD/SubViewportContainer/SubViewport/Camera3D"]
|
||||
|
||||
@ -194,12 +202,8 @@ libraries = {
|
||||
"": SubResource("AnimationLibrary_u1b6p")
|
||||
}
|
||||
|
||||
[node name="WithHands" parent="PlayerControlledNode/CameraMount/Camera3D/HUD/SubViewportContainer/SubViewport/Camera3D/GunMount" instance=ExtResource("3_xxv4y")]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.3, -0.4, 0)
|
||||
visible = false
|
||||
|
||||
[node name="BulletStartingPoint" type="Node3D" parent="PlayerControlledNode/CameraMount"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.42185)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.00364852)
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="PlayerControlledNode"]
|
||||
|
||||
@ -217,12 +221,11 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.786919, 0)
|
||||
shape = SubResource("CapsuleShape3D_taqso")
|
||||
|
||||
[node name="BulletStartingPoint" type="Node3D" parent="ServerControlledNode"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.287, -0.54568)
|
||||
|
||||
[node name="Dummy" parent="ServerControlledNode" instance=ExtResource("5_16l76")]
|
||||
visible = false
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.287, -0.37786)
|
||||
|
||||
[node name="CameraMount" type="Node3D" parent="ServerControlledNode"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.15245, -0.0611187)
|
||||
|
||||
[node name="Character" parent="ServerControlledNode" instance=ExtResource("4_ewxcr")]
|
||||
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||
|
@ -18,7 +18,7 @@ const JUMP_VELOCITY = 4.5
|
||||
|
||||
|
||||
#func _ready() -> void:
|
||||
var current_gun: String = "ak"
|
||||
var current_gun: String = "m1"
|
||||
@onready var gun_mount: Node3D = $CameraMount/Camera3D/HUD/SubViewportContainer/SubViewport/Camera3D/GunMount
|
||||
@onready var gun_mount_anim: AnimationPlayer = $CameraMount/Camera3D/HUD/SubViewportContainer/SubViewport/Camera3D/GunMount/AnimationPlayer
|
||||
var gun_with_hands: Node3D = null
|
||||
@ -30,28 +30,79 @@ var current_weapon_bullet_speed: int
|
||||
var current_weapon_cooldown_interwal: float
|
||||
var look_dir: Vector2
|
||||
var moving = false
|
||||
|
||||
@export var equipment_meta: Dictionary = {}
|
||||
@export var equipment: Dictionary = {}
|
||||
var chosen_weapon: int = 1
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
global_position = $"..".initial_position
|
||||
_add_legs_to_first_view()
|
||||
# -- TODO: It should not be hardcoded
|
||||
# Define a format string with placeholder '%s'
|
||||
#var path_tmpl := "res://scenes/weapon/guns/%s/with_hands.tscn"
|
||||
#var path := path_tmpl % current_gun
|
||||
#var scene: PackedScene = ResourceLoader.load(path)
|
||||
#var node: Node3D = scene.instantiate()
|
||||
#node.scale = Vector3(0.5,0.5,0.5)
|
||||
#node.position = Vector3(-0.3, -0.4, 0)
|
||||
#current_weapon_bullet_speed = node.bullet_speed
|
||||
#current_weapon_cooldown_interwal = node.cooldown
|
||||
#current_weapon_damage = node.damage
|
||||
#gun_with_hands = node
|
||||
#gun_mount.add_child(node)
|
||||
|
||||
@rpc('any_peer', 'call_local', "reliable")
|
||||
func set_default_weapon_meta(slot: int, name: String):
|
||||
equipment_meta[slot] = name
|
||||
print(equipment_meta)
|
||||
|
||||
func load_weapon(name: String) -> Error:
|
||||
var path_tmpl := "res://scenes/weapon/guns/%s/with_hands.tscn"
|
||||
var path := path_tmpl % current_gun
|
||||
var path := path_tmpl % name
|
||||
var scene: PackedScene = ResourceLoader.load(path)
|
||||
var node: Node3D = scene.instantiate()
|
||||
node.scale = Vector3(0.5,0.5,0.5)
|
||||
node.position = Vector3(-0.3, -0.4, 0)
|
||||
current_weapon_bullet_speed = node.bullet_speed
|
||||
current_weapon_cooldown_interwal = node.cooldown
|
||||
current_weapon_damage = node.damage
|
||||
gun_with_hands = node
|
||||
gun_mount.add_child(node)
|
||||
return OK
|
||||
|
||||
@rpc('any_peer', 'call_local', "reliable")
|
||||
func _preload_weapon():
|
||||
for i in equipment_meta:
|
||||
var weapon_name = equipment_meta[i]
|
||||
print(weapon_name)
|
||||
var path_tmpl := "res://scenes/weapon/guns/%s/with_hands.tscn"
|
||||
var path := path_tmpl % weapon_name
|
||||
var scene: PackedScene = ResourceLoader.load(path)
|
||||
var node: Node3D = scene.instantiate()
|
||||
node.scale = Vector3(0.5,0.5,0.5)
|
||||
node.position = Vector3(-0.3, -0.4, 0)
|
||||
node.name = "CurrentWeapon"
|
||||
node.visible = 0
|
||||
equipment[weapon_name] = node
|
||||
gun_mount.add_child(node)
|
||||
|
||||
|
||||
func _choose_weapon(slot: int):
|
||||
if chosen_weapon != slot:
|
||||
if equipment_meta.has(chosen_weapon):
|
||||
if equipment.has(equipment_meta[chosen_weapon]):
|
||||
if equipment[equipment_meta[chosen_weapon]] != null:
|
||||
equipment[equipment_meta[chosen_weapon]].visible = 0
|
||||
chosen_weapon = slot
|
||||
if equipment_meta.has(slot):
|
||||
var desired_weapon: String = equipment_meta[slot]
|
||||
if equipment.has(desired_weapon):
|
||||
equipment[equipment_meta[chosen_weapon]].visible = 1
|
||||
|
||||
|
||||
func _input(event):
|
||||
if multiplayer.get_unique_id() == get_multiplayer_authority():
|
||||
if Input.is_action_just_pressed("jump"): jumping = true
|
||||
if Input.is_action_just_pressed("shoot"): shooting = true
|
||||
if Input.is_action_just_released("shoot"): shooting = false
|
||||
if Input.is_action_just_pressed("weapon_slot_1"): _choose_weapon(1)
|
||||
if Input.is_action_just_pressed("weapon_slot_2"): _choose_weapon(2)
|
||||
if Input.is_action_just_pressed("weapon_slot_3"): _choose_weapon(3)
|
||||
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
look_dir = event.relative * 1
|
||||
rotation.y -= look_dir.x * camera_sens * 1.0
|
||||
@ -95,9 +146,11 @@ func _physics_process(delta: float) -> void:
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if moving:
|
||||
gun_mount_anim.play("move")
|
||||
pass
|
||||
#gun_mount_anim.play("move")
|
||||
else:
|
||||
gun_mount_anim.stop()
|
||||
pass
|
||||
#gun_mount_anim.stop()
|
||||
move_and_slide()
|
||||
|
||||
|
||||
|
@ -14,7 +14,7 @@ func _ready() -> void:
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
func _physics_process(delta):
|
||||
var time_per_frame: float = 1 / Engine.get_frames_per_second()
|
||||
var distance: float = time_per_frame * speed * 1.5
|
||||
ray.target_position.z = distance
|
||||
@ -26,12 +26,10 @@ func _process(delta):
|
||||
var collider = ray.get_collider()
|
||||
if collider != null and collider.is_in_group("target"):
|
||||
ray.get_collider().hit(damage)
|
||||
if collider != null and not collider.is_in_group("ghost"):
|
||||
queue_free()
|
||||
rigid_body_3d.visible = false
|
||||
particles.emitting = true
|
||||
#if ray.get_collider().is_in_group("body"):
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_timer_timeout():
|
||||
queue_free()
|
||||
|
@ -352,10 +352,12 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0,
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.702784, -0.458912, 0)
|
||||
|
||||
[node name="Object_6" type="MeshInstance3D" parent="50ae deagle 8rnd mag (magnum inc)_1"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_at46t")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Object_7" type="MeshInstance3D" parent="50ae deagle 8rnd mag (magnum inc)_1"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_omok5")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -363,6 +365,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.39328, 0)
|
||||
|
||||
[node name="Object_13" type="MeshInstance3D" parent="deagle barrel_3"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_eh67u")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -370,6 +373,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.340227, 0.308393, 0)
|
||||
|
||||
[node name="Object_15" type="MeshInstance3D" parent="deagle slide & bolt_4"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_0mfi1")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -377,10 +381,12 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0017804, -0.00284932, 0)
|
||||
|
||||
[node name="Object_17" type="MeshInstance3D" parent="deagle frame_5"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_n6s72")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Object_18" type="MeshInstance3D" parent="deagle frame_5"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_g8sfg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -388,6 +394,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.03671, 0.122806, 0)
|
||||
|
||||
[node name="Object_20" type="MeshInstance3D" parent="deagle hammer_6"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_rder1")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -395,6 +402,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.289837, 0.0127702, 0)
|
||||
|
||||
[node name="Object_22" type="MeshInstance3D" parent="deagle slide release_7"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_nm1qm")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -402,6 +410,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.289837, 0.0127702, 0)
|
||||
|
||||
[node name="Object_24" type="MeshInstance3D" parent="deagle trigga_8"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_6vr8d")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -409,5 +418,6 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.880028, 0.353879, 0)
|
||||
|
||||
[node name="Object_26" type="MeshInstance3D" parent="deagle safety_9"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qveh3")
|
||||
skeleton = NodePath("")
|
||||
|
@ -569,7 +569,7 @@ _data = {
|
||||
script = ExtResource("1_pwx7d")
|
||||
|
||||
[node name="Gun" parent="." instance=ExtResource("2_xd57f")]
|
||||
transform = Transform3D(-3.61999e-06, 0, 1, 0, 1, 0, -1, 0, -3.61999e-06, 1, -0.3, -6.4)
|
||||
transform = Transform3D(-3.61999e-06, 0, 1, 0, 1, 0, -1, 0, -3.61999e-06, 1.37554, -0.3, -5.61269)
|
||||
|
||||
[node name="HandsNount" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.892999, -0.197934, -6.45866)
|
||||
@ -579,86 +579,103 @@ transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0)
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="HandsNount/LeftHand"]
|
||||
transform = Transform3D(0.017243, -0.999851, 0, 0.999851, 0.0172429, 0, 0, 0, 1, 0.0604441, -1.48798, 5.58251)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_kns8q")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(0.838921, -0.00227217, -0.544249, 0.127745, 0.972877, 0.192848, 0.529049, -0.231309, 0.816458, -1.90735e-06, -0.118854, 0.00119209)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_714yc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(0.999928, -0.00607729, 0.0103503, 0.00417694, 0.984629, 0.174608, -0.0112524, -0.174552, 0.984584, 0.635515, 5.96046e-08, -1.8433)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_8khc4")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/index_0"]
|
||||
transform = Transform3D(0.999954, -0.00928965, 0.00246585, 0.00884504, 0.989813, 0.142097, -0.00376076, -0.142068, 0.98985, 0, 4.76837e-07, -0.520542)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_pl1un")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(0.999995, -0.00251388, -0.0017382, 0.00303726, 0.880775, 0.473525, 0.000340577, -0.473528, 0.880778, 1.19209e-07, 0, -0.496836)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_jg5hp")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(1, -2.87512e-09, 2.22359e-08, -2.87511e-09, 0.967113, 0.254349, -2.22359e-08, -0.254349, 0.967113, 0.219422, -2.84217e-14, -1.96367)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_r4jrw")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/middle_0"]
|
||||
transform = Transform3D(0.99999, 0.00290334, -0.00345655, -0.000566929, 0.840435, 0.541912, 0.00447836, -0.541904, 0.840428, 0, -2.38419e-07, -0.595448)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_b8au2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(0.999977, 0.00565156, -0.00364683, -0.00243919, 0.809996, 0.58643, 0.00626817, -0.586408, 0.809991, 1.19209e-07, 4.76837e-07, -0.576577)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_7ykdv")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(1, -1.18514e-09, -1.43461e-08, -1.18514e-09, 0.986444, -0.164101, 1.43461e-08, 0.164101, 0.986444, -0.636916, 0, -1.87594)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_pfqob")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.999827, 0.00839673, -0.0165888, 0.0124575, 0.359801, 0.932946, 0.0138024, -0.932991, 0.359634, -4.76837e-07, -9.53674e-07, -0.50863)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_274rt")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(0.999989, 0.000408818, -0.00463841, 0.00108977, 0.947926, 0.318489, 0.00452707, -0.31849, 0.947915, -2.38419e-07, 0, -0.484157)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_kxx5d")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.22161, 0, -1.94957)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3t00j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/ring_0"]
|
||||
transform = Transform3D(0.999889, 0.00891773, -0.0119886, 0.00647315, 0.464619, 0.885488, 0.0134667, -0.885466, 0.464509, 0, 0, -0.57841)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_1inwa")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(1, -9.99309e-07, 2.53413e-06, 5.12227e-07, 0.982674, 0.185341, -2.67476e-06, -0.185341, 0.982674, 0, 0, -0.558438)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_lqg6m")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="HandsNount/LeftHand/hand"]
|
||||
transform = Transform3D(0.622335, 1.02049, -0.090116, -0.679455, 0.490067, 0.857314, 0.766716, -0.394025, 0.832886, 0.713653, -0.171155, -0.268099)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhvx2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/thumb_0"]
|
||||
transform = Transform3D(0.454518, 0.871776, 0.182807, -0.562354, 0.440004, -0.700109, -0.690775, 0.21541, 0.690238, 0.418848, 0, -0.541472)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_6mwj2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="HandsNount/LeftHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(0.855091, -0.0944566, 0.509801, 0.0528752, 0.994025, 0.0954866, -0.515774, -0.054694, 0.854977, 0.286444, 2.38419e-07, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3qmci")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -667,86 +684,103 @@ transform = Transform3D(0.0154179, -0.39772, 0.0397626, 0.3997, 0.0154947, -4.34
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="HandsNount/RightHand"]
|
||||
transform = Transform3D(0.938182, -0.264282, -0.223536, 0.267023, 0.963515, -0.0184445, 0.220254, -0.0423846, 0.974523, 0.244512, 1.41786, -0.120203)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_kns8q")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(0.911527, -0.261569, -0.317335, 0.200638, 0.956443, -0.212044, 0.358977, 0.129614, 0.924303, 0, -0.118854, 0.00119233)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_714yc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.635515, 0, -1.8433)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_8khc4")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="HandsNount/RightHand/hand/index_0"]
|
||||
transform = Transform3D(0.97186, -0.151231, 0.180602, 0.152949, 0.988224, 0.0044579, -0.17915, 0.0232906, 0.983546, -0.00261259, 0.0673971, -0.520541)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_pl1un")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="HandsNount/RightHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(0.938727, -0.108255, -0.32722, -0.191027, 0.626817, -0.755387, 0.286882, 0.77161, 0.56773, -4.76837e-07, -4.76837e-07, -0.496837)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_jg5hp")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(0.988908, 0.0967651, 0.11268, -0.0380662, 0.898432, -0.437459, -0.143566, 0.428318, 0.89215, 0.210801, -0.00161457, -2.02209)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_r4jrw")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="HandsNount/RightHand/hand/middle_0"]
|
||||
transform = Transform3D(0.980904, -0.0947717, -0.169842, -0.0846826, 0.578027, -0.811612, 0.175091, 0.810495, 0.558963, -0.00528598, -0.0232601, -0.540816)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_b8au2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="HandsNount/RightHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0139632, -0.00054121, -0.559071)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_7ykdv")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(0.99448, 0.0968483, -0.040361, -0.10475, 0.894417, -0.434795, -0.00600898, 0.436623, 0.899625, -0.626153, -0.00739431, -1.82089)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_pfqob")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="HandsNount/RightHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.992472, 0.117781, -0.0335934, -0.107407, 0.70515, -0.700876, -0.0588621, 0.699207, 0.712491, 0.004601, 0.101186, -0.574392)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_274rt")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="HandsNount/RightHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(0.997492, -0.0416478, -0.0572349, 0.00359704, 0.837365, -0.546632, 0.0706927, 0.545055, 0.835414, 4.76837e-07, -9.53674e-07, -0.484157)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_kxx5d")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(0.995147, 0.0957334, 0.0227501, -0.0799641, 0.921527, -0.379991, -0.0573428, 0.376327, 0.92471, -0.22375, 0.0090065, -1.9462)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3t00j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="HandsNount/RightHand/hand/ring_0"]
|
||||
transform = Transform3D(0.987205, 0.107622, -0.117666, -0.155072, 0.475994, -0.865669, -0.0371562, 0.872839, 0.486593, 0.00103188, 0.0315599, -0.607413)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_1inwa")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="HandsNount/RightHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(0.999942, -0.00820966, -0.00692331, 0.00690099, 0.985162, -0.171487, 0.00822844, 0.171429, 0.985162, -5.96046e-08, 0, -0.558439)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_lqg6m")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="HandsNount/RightHand/hand"]
|
||||
transform = Transform3D(0.781211, -0.802499, -0.42722, 0.742911, 0.888178, -0.30989, 0.524025, -0.0628175, 1.07622, 0.473039, 0.152636, -0.540639)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhvx2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="HandsNount/RightHand/hand/thumb_0"]
|
||||
transform = Transform3D(0.944493, 0.10769, 0.310379, 0.00222689, 0.942629, -0.333833, -0.328522, 0.315995, 0.890067, 0.418848, -1.78814e-07, -0.541475)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_6mwj2")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="HandsNount/RightHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(0.789391, 0.00601005, 0.613862, -0.20452, 0.945403, 0.253744, -0.578821, -0.325851, 0.74752, 0.286444, 2.38419e-07, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3qmci")
|
||||
skeleton = NodePath("")
|
||||
|
||||
|
@ -286,16 +286,19 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0,
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.23532, 0.346247, 0.000749123)
|
||||
|
||||
[node name="Object_6" type="MeshInstance3D" parent="3006 m1gar clip 8rnd empty (garand)_1"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_lbnb6")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="m1 garand_3" type="Node3D" parent="."]
|
||||
|
||||
[node name="Object_12" type="MeshInstance3D" parent="m1 garand_3"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_jxy1l")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Object_13" type="MeshInstance3D" parent="m1 garand_3"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_m3jyl")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -303,6 +306,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.52944, 0.463358, 0)
|
||||
|
||||
[node name="Object_15" type="MeshInstance3D" parent="m1gar reload handle_4"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_p3wst")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -310,6 +314,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.05925, 0.0738102, 0)
|
||||
|
||||
[node name="Object_17" type="MeshInstance3D" parent="m1gar follower_5"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_w7wjx")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -317,6 +322,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.00218, 0.0140908, 0)
|
||||
|
||||
[node name="Object_19" type="MeshInstance3D" parent="m1gar trigga_6"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_8ger5")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -324,6 +330,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(0.0663535, 0, 0, 0, 0.0663535, 0, 0, 0, 0.0199075, -1.73294, -0.0684423, 0)
|
||||
|
||||
[node name="Object_21" type="MeshInstance3D" parent="m1gar safety_7"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3qbwi")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -331,5 +338,6 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.916197, 0.599432, -0.000388713)
|
||||
|
||||
[node name="Object_23" type="MeshInstance3D" parent="m1gar bolt carrier_8"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_mui3s")
|
||||
skeleton = NodePath("")
|
||||
|
@ -552,105 +552,6 @@ _surfaces = [{
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_vqajq")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_os83d"]
|
||||
resource_name = "shot"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Gun:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1.61348, -0.274324, -2.91155), Vector3(1.613, -0.274, -1.912), Vector3(1.61348, -0.274324, -2.91155)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Gun:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-3.498e-09, 1.60076, 0.101526), Vector3(0, 1.60047, 0.275762), Vector3(-3.498e-09, 1.60076, 0.101526)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("RightHand:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(2.07307, -0.567408, -0.0471716), Vector3(2.073, -1.067, 1.047), Vector3(2.07307, -0.567408, -0.0471716)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("LeftHand:position")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.743494, -0.274324, -2.8409), Vector3(-0.743, 0.124, -2.341), Vector3(-0.743494, -0.274324, -2.8409)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("RightHand:rotation")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.32218, -0.0875629, 1.89252), Vector3(-0.148353, -0.261799, 1.7174), Vector3(-0.32218, -0.0875629, 1.89252)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("RightHand/hand/index_0/index_1/index_2:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.552377, -0.0925758, 0.224916), Vector3(0.551524, -0.790634, 0.225147), Vector3(0.552377, -0.0925758, 0.224916)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("RightHand/hand/thumb_0:rotation")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.29132, -0.28541, 0.792097), Vector3(-0.274017, -0.286234, 1.14145), Vector3(-0.29132, -0.28541, 0.792097)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("LeftHand:rotation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.101526, 0.0299673, -3.14159), Vector3(0.101229, 0.0296706, -3.14159), Vector3(0.101526, 0.0299673, -3.14159)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_u60x6"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@ -750,6 +651,105 @@ tracks/7/keys = {
|
||||
"values": [Vector3(0.101526, 0.0299673, -3.14159)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_os83d"]
|
||||
resource_name = "shot"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Gun:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1.61348, -0.274324, -2.91155), Vector3(1.613, -0.274, -1.912), Vector3(1.61348, -0.274324, -2.91155)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Gun:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-3.498e-09, 1.60076, 0.101526), Vector3(0, 1.60047, 0.275762), Vector3(-3.498e-09, 1.60076, 0.101526)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("RightHand:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(2.07307, -0.567408, -0.0471716), Vector3(2.073, -1.067, 1.047), Vector3(2.07307, -0.567408, -0.0471716)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("LeftHand:position")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.743494, -0.274324, -2.8409), Vector3(-0.743, 0.124, -2.341), Vector3(-0.743494, -0.274324, -2.8409)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("RightHand:rotation")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.32218, -0.0875629, 1.89252), Vector3(-0.148353, -0.261799, 1.7174), Vector3(-0.32218, -0.0875629, 1.89252)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("RightHand/hand/index_0/index_1/index_2:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.552377, -0.0925758, 0.224916), Vector3(0.551524, -0.790634, 0.225147), Vector3(0.552377, -0.0925758, 0.224916)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("RightHand/hand/thumb_0:rotation")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.29132, -0.28541, 0.792097), Vector3(-0.274017, -0.286234, 1.14145), Vector3(-0.29132, -0.28541, 0.792097)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("LeftHand:rotation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 0.0666667, 0.933333),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.101526, 0.0299673, -3.14159), Vector3(0.101229, 0.0296706, -3.14159), Vector3(0.101526, 0.0299673, -3.14159)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_i7e7t"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_u60x6"),
|
||||
@ -760,181 +760,215 @@ _data = {
|
||||
script = ExtResource("1_m3jaa")
|
||||
|
||||
[node name="Gun" parent="." instance=ExtResource("1_krf2i")]
|
||||
transform = Transform3D(-0.0298086, 0.00303679, 0.999551, 0.101352, 0.994851, 3.498e-09, -0.994404, 0.101306, -0.0299629, 1.61348, -0.274324, -2.91155)
|
||||
transform = Transform3D(-0.0298049, 0.00303641, 0.999551, 0.101352, 0.994851, 3.498e-09, -0.994404, 0.101306, -0.0299592, 1.61348, -0.274324, -2.91155)
|
||||
|
||||
[node name="RightHand" type="Node3D" parent="."]
|
||||
transform = Transform3D(-0.115487, -0.381526, -0.0331805, 0.359952, -0.119972, 0.126654, -0.130756, 0.00670867, 0.377965, 2.07307, -0.567408, -0.0471716)
|
||||
transform = Transform3D(-0.115488, -0.381526, -0.0331806, 0.359951, -0.119973, 0.126654, -0.130756, 0.00670924, 0.377965, 2.07307, -0.567408, -0.0471716)
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="RightHand"]
|
||||
transform = Transform3D(0.999878, -0.0113375, -0.0107538, 0.0109766, 0.999394, -0.0330333, 0.0111219, 0.0329112, 0.999396, 0.0448582, 0.153481, 0.934615)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gfbur")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.99943, -0.0308143, -0.0138291, 0.0302077, 0.998656, -0.0421146, 0.0151082, 0.0416729, 0.999018, 0, -0.118853, 0.00119257)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_p027r")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.97874, -0.174322, -0.10807, 0.111506, 0.894478, -0.432984, 0.172145, 0.411728, 0.8949, 0.635516, 0, -1.8433)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_a5f5j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="RightHand/hand/index_0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.520542)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_o8oks")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="RightHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(0.95982, -0.269354, -0.0786954, 0.189856, 0.829838, -0.524712, 0.206638, 0.488689, 0.847634, 4.76837e-07, -4.76837e-07, -0.496836)
|
||||
transform = Transform3D(0.95982, -0.269354, -0.0786953, 0.189856, 0.829838, -0.524712, 0.206638, 0.488689, 0.847634, 4.76837e-07, -4.76837e-07, -0.496836)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_etl30")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.820027, -0.572323, 0.00157543, 0.153026, 0.216603, -0.964192, 0.551488, 0.790904, 0.265201, 0.219423, -5.96046e-08, -1.96367)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_wmu88")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="RightHand/hand/middle_0"]
|
||||
transform = Transform3D(0.887272, -0.4609, -0.0178873, 0.239437, 0.493389, -0.836204, 0.394232, 0.737657, 0.548127, 0, 4.76837e-07, -0.59545)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_5rofx")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="RightHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(0.969754, -0.233924, -0.069684, 0.174505, 0.864074, -0.472149, 0.170659, 0.445708, 0.87876, -2.38419e-07, -2.38419e-07, -0.576577)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_cbjny")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.807752, -0.589058, 0.0234082, 0.124715, 0.131939, -0.983381, 0.57618, 0.797247, 0.180038, -0.636916, 5.96046e-08, -1.87594)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_rkiog")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="RightHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.842041, -0.535791, 0.062405, 0.219177, 0.234136, -0.947176, 0.492877, 0.811239, 0.314586, 0, 0, -0.508631)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_fcjxo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="RightHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.484157)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gkp3s")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.773581, -0.62896, 0.0773416, 0.104342, 0.00604073, -0.994523, 0.625048, 0.777414, 0.0703001, -0.22161, -2.98023e-08, -1.94957)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_yijby")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="RightHand/hand/ring_0"]
|
||||
transform = Transform3D(0.913093, -0.40623, -0.0351745, 0.233763, 0.592204, -0.771135, 0.334089, 0.695896, 0.635699, -1.19209e-07, -4.76837e-07, -0.578411)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhlng")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="RightHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.558439)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_oc8jg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.876835, -0.750651, -0.323268, 0.817298, 0.806421, 0.344279, 0.00188308, -0.472257, 1.10172, 0.630965, 0.0891449, -0.395118)
|
||||
transform = Transform3D(0.876835, -0.750651, -0.323268, 0.817298, 0.806421, 0.344279, 0.00188222, -0.472257, 1.10172, 0.630965, 0.0891449, -0.395118)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_eskeg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="RightHand/hand/thumb_0"]
|
||||
transform = Transform3D(0.939586, 0.0412881, -0.339814, -0.00946513, 0.995454, 0.0947787, 0.342183, -0.0858363, 0.935704, 0.418848, 0, -0.541475)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_chiaf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="RightHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(0.979773, -0.081366, 0.182824, -0.00440877, 0.904607, 0.426224, -0.200064, -0.418409, 0.88595, 0.286444, -3.57628e-07, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3dk54")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="LeftHand" type="Node3D" parent="."]
|
||||
transform = Transform3D(-0.39982, -0.00121465, 0.0119234, -6.00873e-08, -0.39794, -0.0405407, 0.0119851, -0.0405224, 0.397762, -0.743494, -0.274324, -2.8409)
|
||||
transform = Transform3D(-0.39982, -0.0012137, 0.0119234, -1.00885e-06, -0.39794, -0.0405407, 0.011985, -0.0405225, 0.397762, -0.743494, -0.274324, -2.8409)
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="LeftHand"]
|
||||
transform = Transform3D(0.371303, 5.49624e-08, 0.928512, 5.49624e-08, 1, -8.11731e-08, -0.928512, 8.11731e-08, 0.371303, -4.22105, 3.69016e-07, -1.30315)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gfbur")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.549625, 0.70194, -0.45298, -0.528408, 0.712083, 0.462301, 0.647067, -0.0147343, 0.762289, -0.0545573, -0.118854, -0.135237)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_p027r")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.969705, -0.232235, -0.0757588, 0.232235, 0.780256, 0.580747, -0.0757589, -0.580747, 0.810551, 0.616934, 0.142436, -1.88976)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_a5f5j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="LeftHand/hand/index_0"]
|
||||
transform = Transform3D(0.981015, -0.188032, -0.0474758, 0.188032, 0.862293, 0.470208, -0.0474758, -0.470208, 0.881278, 2.38419e-07, 1.11759e-08, -0.520542)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_o8oks")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="LeftHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.496836)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_etl30")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.969705, -0.232235, -0.0757588, 0.232235, 0.780256, 0.580747, -0.0757589, -0.580747, 0.810551, 0.222566, -0.0240999, -1.95581)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_wmu88")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="LeftHand/hand/middle_0"]
|
||||
transform = Transform3D(0.97541, -0.211647, -0.0614923, 0.211647, 0.821637, 0.529262, -0.0614923, -0.529262, 0.846227, 0, 2.23517e-08, -0.59545)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_5rofx")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="LeftHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(0.991358, -0.129395, -0.0216121, 0.129395, 0.937312, 0.323577, -0.0216122, -0.323577, 0.945955, -2.38419e-07, 2.98023e-08, -0.576577)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_cbjny")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.971854, -0.224825, -0.0703848, 0.224825, 0.795843, 0.562216, -0.0703849, -0.562216, 0.82399, -0.636916, 0, -1.87594)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_rkiog")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="LeftHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.932403, -0.319454, -0.16904, 0.319454, 0.509687, 0.798854, -0.16904, -0.798854, 0.577285, -1.19209e-07, 1.42109e-14, -0.508631)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_fcjxo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="LeftHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.484157)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gkp3s")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.969705, -0.232235, -0.0757588, 0.232235, 0.780256, 0.580747, -0.0757589, -0.580747, 0.810551, -0.206173, -0.118337, -1.91097)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_yijby")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="LeftHand/hand/ring_0"]
|
||||
transform = Transform3D(0.972767, -0.221557, -0.0681025, 0.221557, 0.802464, 0.554044, -0.0681025, -0.554044, 0.829697, -1.19209e-07, 3.91155e-08, -0.578411)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhlng")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="LeftHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(0.988766, -0.146808, -0.0280926, 0.146808, 0.918515, 0.36712, -0.0280926, -0.36712, 0.929749, 0, -2.98023e-08, -0.558439)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_oc8jg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(1.10921, 0.452975, 0.0357747, -0.452975, 1.09491, 0.18114, 0.0357746, -0.18114, 1.18437, 0.71163, -0.0538707, -0.365427)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_eskeg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="LeftHand/hand/thumb_0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.418848, 0, -0.541475)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_chiaf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="LeftHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.286444, 0, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3dk54")
|
||||
skeleton = NodePath("")
|
||||
|
||||
|
@ -288,10 +288,12 @@ transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0,
|
||||
transform = Transform3D(2.32615, 0, 0, 0, 2.32615, 0, 0, 0, 0.186304, 0.709893, 0.122355, 0)
|
||||
|
||||
[node name="Object_4" type="MeshInstance3D" parent="Cube_0"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_akyio")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Object_5" type="MeshInstance3D" parent="Cube_0"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_m3e74")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -299,6 +301,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(0.0527493, 0, 0, 0, 0.0527493, 0, 0, 0, 0.0527493, -0.195483, 0.553212, 0.171812)
|
||||
|
||||
[node name="Object_7" type="MeshInstance3D" parent="Cube_005_3"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_g6ol6")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -306,6 +309,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(0.21111, 0, 0, 0, 0.21111, 0, 0, 0, 0.21111, -6.12243, -1.58424, -0.573743)
|
||||
|
||||
[node name="Object_9" type="MeshInstance3D" parent="Cube_005_3/Cube_006_1"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_n3uhl")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -313,6 +317,7 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(0.789892, 0, 0, 0, 0.789892, 0, 0, 0, 3.29548, 2.14959, -3.87967, -3.25715)
|
||||
|
||||
[node name="Object_11" type="MeshInstance3D" parent="Cube_005_3/Cube_007_2"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3hery")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -320,10 +325,12 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(0.0386846, 0, -0.0324602, 0, 0.0581218, 0, 0.0324602, 0, 0.0386846, 2.27595, 0.733596, -0.215461)
|
||||
|
||||
[node name="Object_13" type="MeshInstance3D" parent="Cylinder_005_4"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_hpbo5")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Object_14" type="MeshInstance3D" parent="Cylinder_005_4"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_8rkoc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -331,5 +338,6 @@ skeleton = NodePath("")
|
||||
transform = Transform3D(-0.153886, 0, 0, 0, -0.153886, 0, 0, 0, -0.152651, 0.34946, -1.21305, 0)
|
||||
|
||||
[node name="Object_16" type="MeshInstance3D" parent="Cube_008_5"]
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_s6ert")
|
||||
skeleton = NodePath("")
|
||||
|
@ -613,86 +613,103 @@ transform = Transform3D(0.0408408, -0.984904, 0.168219, 0.996085, 0.0269236, -0.
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="RightHand"]
|
||||
transform = Transform3D(1, -1.43108e-08, 2.32831e-09, 6.00153e-10, 1, 1.53668e-08, 0, 1.04308e-07, 1, -0.269174, 1.56694, 1.21121)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gfbur")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.871517, -0.157204, -0.464483, 0.110835, 0.985857, -0.125701, 0.477674, 0.05807, 0.876616, 2.98023e-08, -0.118854, 0.00119209)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_p027r")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.984493, -0.122734, -0.125338, 0.102921, 0.982715, -0.153881, 0.142058, 0.138595, 0.980107, 0.635515, -5.96046e-08, -1.8433)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_a5f5j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="RightHand/hand/index_0"]
|
||||
transform = Transform3D(0.946835, 0.29709, -0.123457, -0.27356, 0.5415, -0.794948, -0.169319, 0.786458, 0.593983, 0, 1.19209e-07, -0.520541)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_o8oks")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="RightHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(0.970442, 0.204583, -0.128019, -0.215486, 0.495688, -0.841344, -0.108667, 0.844061, 0.525121, 0, 0, -0.496836)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_etl30")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.975999, 0.214539, 0.0373925, 0.0241975, 0.0638048, -0.997669, -0.216425, 0.974629, 0.057082, 0.219422, -1.78814e-07, -1.96367)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_wmu88")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="RightHand/hand/middle_0"]
|
||||
transform = Transform3D(0.94363, 0.318152, -0.0913353, -0.312235, 0.763972, -0.564673, -0.109874, 0.56136, 0.820245, -7.45058e-09, 9.53674e-07, -0.59545)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_5rofx")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="RightHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(0.989598, 0.131216, 0.0589736, -0.00316459, 0.429695, -0.902969, -0.143825, 0.893389, 0.42564, -5.96046e-08, 2.38419e-07, -0.576577)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_cbjny")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.99408, 0.103446, 0.0332422, 0.024702, 0.0827707, -0.996262, -0.105811, 0.991185, 0.0797254, -0.635763, -0.0419329, -1.90412)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_rkiog")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="RightHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.995022, 0.0749402, -0.0656893, -0.0944399, 0.49865, -0.861643, -0.0318157, 0.863557, 0.503246, 0, 0, -0.508631)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_fcjxo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="RightHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(0.999955, 0.00162155, 0.00930269, 0.00162154, 0.941026, -0.338331, -0.00930269, 0.338331, 0.940981, 0, -1.19209e-07, -0.484157)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gkp3s")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.992155, 0.12016, 0.0344936, 0.0245565, 0.0832197, -0.996229, -0.122577, 0.98926, 0.0796161, -0.222763, 0.0419325, -1.92139)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_yijby")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="RightHand/hand/ring_0"]
|
||||
transform = Transform3D(0.99566, 0.0810487, -0.045745, -0.0890128, 0.68581, -0.722316, -0.0271704, 0.723253, 0.690048, 0, -7.15256e-07, -0.57841)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhlng")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="RightHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(0.971497, -0.0080527, -0.236915, -0.182113, 0.614437, -0.76766, 0.151751, 0.788925, 0.595457, 1.19209e-07, 1.19209e-07, -0.558438)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_oc8jg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="RightHand/hand"]
|
||||
transform = Transform3D(0.36322, -1.0865, 0.352709, 0.981858, 0.107787, -0.679085, 0.583819, 0.494686, 0.922638, 0.71163, -0.053871, -0.365427)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_eskeg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="RightHand/hand/thumb_0"]
|
||||
transform = Transform3D(0.883964, 0.0726299, 0.461879, -0.161858, 0.974315, 0.156561, -0.438645, -0.213153, 0.873015, 0.418848, 0, -0.541475)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_chiaf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="RightHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(0.75652, -0.00190737, 0.653967, -0.248903, 0.923895, 0.29063, -0.604752, -0.382642, 0.69847, 0.286444, 0, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3dk54")
|
||||
skeleton = NodePath("")
|
||||
|
||||
@ -701,86 +718,103 @@ transform = Transform3D(-0.986566, -0.0137548, 0.16278, -8.71123e-08, -0.996449,
|
||||
|
||||
[node name="hand" type="MeshInstance3D" parent="LeftHand"]
|
||||
transform = Transform3D(0.466661, 0.785545, 0.406383, -0.845509, 0.531056, -0.0556173, -0.259502, -0.317646, 0.912009, -1.49496, 0.726891, 1.1859)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gfbur")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="arm_lower" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.712907, 0.152723, -0.684426, -0.120474, 0.988159, 0.0950107, 0.690832, 0.0147217, 0.722865, -1.78814e-07, -0.118854, 0.00119257)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_p027r")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.909011, -0.158529, -0.385444, 0.411197, 0.491891, 0.767437, 0.0679352, -0.856103, 0.512321, 0.635515, 0, -1.8433)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_a5f5j")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_1" type="MeshInstance3D" parent="LeftHand/hand/index_0"]
|
||||
transform = Transform3D(0.360161, 0.878315, -0.314399, -0.562462, 0.473317, 0.677943, 0.744258, -0.0673311, 0.66449, 0, 0, -0.520542)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_o8oks")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="index_2" type="MeshInstance3D" parent="LeftHand/hand/index_0/index_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.496836)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_etl30")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.924177, -0.108991, -0.366084, 0.375786, 0.431125, 0.820315, 0.0684203, -0.895686, 0.439393, 0.219422, 1.19209e-07, -1.96367)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_wmu88")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_1" type="MeshInstance3D" parent="LeftHand/hand/middle_0"]
|
||||
transform = Transform3D(0.708612, 0.631376, -0.315015, -0.185389, 0.597361, 0.780251, 0.680809, -0.494494, 0.540347, 0, -1.19209e-07, -0.595449)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_5rofx")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="middle_2" type="MeshInstance3D" parent="LeftHand/hand/middle_0/middle_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.576577)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_cbjny")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.949731, -0.0267719, -0.311921, 0.311436, 0.182385, 0.9326, 0.0319221, -0.982863, 0.181554, -0.636916, 1.19209e-07, -1.87594)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_rkiog")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_1" type="MeshInstance3D" parent="LeftHand/hand/pinky_0"]
|
||||
transform = Transform3D(0.845672, 0.407715, -0.344394, 0.0722414, 0.551905, 0.830772, 0.528791, -0.72744, 0.437277, 2.98023e-08, 1.19209e-07, -0.508631)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_fcjxo")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pinky_2" type="MeshInstance3D" parent="LeftHand/hand/pinky_0/pinky_1"]
|
||||
transform = Transform3D(1, 2.98023e-08, 5.21541e-08, 0, 1, -1.49012e-08, -2.23517e-08, -2.98023e-08, 1, 0.00217819, 0.0183992, -0.48227)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_gkp3s")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.95303, -0.0217418, -0.302094, 0.293032, 0.318418, 0.901522, 0.0765916, -0.947701, 0.309833, -0.22161, 1.78814e-07, -1.94957)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_yijby")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_1" type="MeshInstance3D" parent="LeftHand/hand/ring_0"]
|
||||
transform = Transform3D(0.816171, 0.380333, -0.434983, 0.161581, 0.572547, 0.803792, 0.554757, -0.726317, 0.405842, 5.96046e-08, 0, -0.57841)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_qhlng")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="ring_2" type="MeshInstance3D" parent="LeftHand/hand/ring_0/ring_1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.558439)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_oc8jg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_0" type="MeshInstance3D" parent="LeftHand/hand"]
|
||||
transform = Transform3D(0.576737, 0.855954, -0.60954, -0.783882, 0.813511, 0.400686, 0.699803, 0.205824, 0.951176, 0.454804, -0.12109, 0.12852)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_eskeg")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_1" type="MeshInstance3D" parent="LeftHand/hand/thumb_0"]
|
||||
transform = Transform3D(1, 2.98023e-08, -5.96046e-08, -2.98023e-08, 1, 0, 2.98023e-08, 0, 1, 0.416817, 0.00282621, -0.539943)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_chiaf")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="thumb_2" type="MeshInstance3D" parent="LeftHand/hand/thumb_0/thumb_1"]
|
||||
transform = Transform3D(0.856745, 0.336987, 0.390422, -0.409412, 0.904753, 0.117492, -0.313642, -0.260503, 0.913109, 0.286444, -1.78814e-07, -0.397435)
|
||||
layers = 524289
|
||||
mesh = SubResource("ArrayMesh_3dk54")
|
||||
skeleton = NodePath("")
|
||||
|
||||
|
@ -261,8 +261,6 @@ func _shoot():
|
||||
var collider := aim_ray.get_collider()
|
||||
if collider != null and collider.is_in_group("target"):
|
||||
aim_ray.get_collider().take_damage()
|
||||
if collider != null and collider.is_in_group("body"):
|
||||
collider.hit(50)
|
||||
var root := get_tree().get_root()
|
||||
gun_with_hands.shoot()
|
||||
cant_shoot = true
|
||||
@ -288,6 +286,7 @@ func _get_camera_collision():
|
||||
return ray_end
|
||||
|
||||
func take_damage(dam: int):
|
||||
print("takin damage")
|
||||
var new_health = health - dam
|
||||
set_health(new_health)
|
||||
if multiplayer.is_server():
|
||||
|
@ -1,23 +1,25 @@
|
||||
shader_type spatial;
|
||||
render_mode cull_front, unshaded;
|
||||
@shader_type spatial;
|
||||
@render_mode unshaded;
|
||||
|
||||
uniform vec4 outline_color : source_color;
|
||||
uniform float outline_width = 1.0;
|
||||
|
||||
void vertex() {
|
||||
vec4 clip_position = PROJECTION_MATRIX * (MODELVIEW_MATRIX * vec4(VERTEX, 1.0));
|
||||
vec3 clip_normal = mat3(PROJECTION_MATRIX) * (mat3(MODELVIEW_MATRIX) * NORMAL);
|
||||
|
||||
vec2 offset = normalize(clip_normal.xy) / VIEWPORT_SIZE * clip_position.w * outline_width * 2.0;
|
||||
|
||||
clip_position.xy += offset;
|
||||
|
||||
POSITION = clip_position;
|
||||
}
|
||||
@uniform sampler2D albedo_texture;
|
||||
@uniform vec3 light_color = vec3(1.0, 1.0, 1.0);
|
||||
@uniform float outline_width = 0.05;
|
||||
@uniform vec3 outline_color = vec3(0.0, 0.0, 0.0);
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = outline_color.rgb;
|
||||
if (outline_color.a < 1.0) {
|
||||
ALPHA = outline_color.a;
|
||||
}
|
||||
}
|
||||
// Fake directional light
|
||||
vec3 light_dir = normalize(vec3(0.5, 1.0, -0.5));
|
||||
vec3 norm = normalize(NORMAL);
|
||||
float intensity = dot(norm, light_dir);
|
||||
|
||||
// Cel shading - Quantized lighting steps
|
||||
float shade = step(0.1, intensity) * 0.3 +
|
||||
step(0.3, intensity) * 0.4 +
|
||||
step(0.6, intensity) * 0.3;
|
||||
|
||||
// Sample texture and apply shading
|
||||
vec4 tex_color = texture(albedo_texture, UV);
|
||||
vec3 final_color = tex_color.rgb * shade * light_color;
|
||||
|
||||
ALBEDO = final_color;
|
||||
}
|
||||
|
36
shaders/test.gdshader
Normal file
36
shaders/test.gdshader
Normal file
@ -0,0 +1,36 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded;
|
||||
|
||||
uniform vec4 light_color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform sampler2D albedo_texture;
|
||||
uniform float outline_width = 0.05; // Thickness of outline
|
||||
uniform vec4 outline_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
void vertex() {
|
||||
// Expanding vertices along normals for outlines (inverted hull technique)
|
||||
if (OUTLINE_PASS) {
|
||||
VERTEX += NORMAL * outline_width;
|
||||
}
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec3 light_dir = normalize(vec3(0.5, 1.0, -0.5)); // Fake directional light
|
||||
vec3 norm = normalize(NORMAL);
|
||||
float intensity = dot(norm, light_dir);
|
||||
|
||||
// Cel shading (quantized lighting levels)
|
||||
float shade = smoothstep(0.1, 0.3, intensity) * 0.5 +
|
||||
smoothstep(0.3, 0.6, intensity) * 0.3 +
|
||||
smoothstep(0.6, 1.0, intensity) * 0.2;
|
||||
|
||||
// Sample texture and apply shading
|
||||
vec4 tex_color = texture(albedo_texture, UV);
|
||||
vec3 final_color = tex_color.rgb * shade * light_color.rgb;
|
||||
|
||||
// Outline pass
|
||||
if (OUTLINE_PASS) {
|
||||
final_color = outline_color.rgb;
|
||||
}
|
||||
|
||||
ALBEDO = final_color;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user