WIP: Damage/frag system is implemented without ragdolls
This commit is contained in:
parent
dbc6a79182
commit
3560bebbcc
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
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
@ -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"]
|
||||
@ -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
|
||||
@ -941,7 +945,7 @@ 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)
|
||||
bones/0/enabled = true
|
||||
bones/0/position = Vector3(0.491984, 0.381591, -82.5342)
|
||||
bones/0/position = Vector3(0.491975, 0.381586, -82.5341)
|
||||
bones/0/rotation = Quaternion(-0.656646, -0.246297, 0.163159, 0.693926)
|
||||
bones/0/scale = Vector3(1, 1, 1)
|
||||
bones/1/name = "mixamorig_Spine"
|
||||
@ -949,35 +953,35 @@ bones/1/parent = 0
|
||||
bones/1/rest = Transform3D(1, -1.22161e-05, -7.43263e-07, 1.22161e-05, 0.992624, 0.121236, -7.43257e-07, -0.121236, 0.992624, 0.000859786, 9.92346, -1.22733)
|
||||
bones/1/enabled = true
|
||||
bones/1/position = Vector3(0.000859786, 9.92346, -1.22733)
|
||||
bones/1/rotation = Quaternion(0.034224, -0.0149729, 0.00749797, 0.999274)
|
||||
bones/1/rotation = Quaternion(0.0341866, -0.0149626, 0.00750204, 0.999275)
|
||||
bones/1/scale = Vector3(1, 1, 1)
|
||||
bones/2/name = "mixamorig_Spine1"
|
||||
bones/2/parent = 1
|
||||
bones/2/rest = Transform3D(1, 1.86323e-05, -7.30208e-09, -1.86323e-05, 1, -0.000392269, -6.79989e-12, 0.000392269, 1, -1.13096e-09, 11.732, 1.20875e-06)
|
||||
bones/2/enabled = true
|
||||
bones/2/position = Vector3(-1.13096e-09, 11.732, 1.20875e-06)
|
||||
bones/2/rotation = Quaternion(0.12507, -0.0184348, 0.0542054, 0.990495)
|
||||
bones/2/rotation = Quaternion(0.125114, -0.0184178, 0.0542074, 0.990489)
|
||||
bones/2/scale = Vector3(1, 1, 1)
|
||||
bones/3/name = "mixamorig_Spine2"
|
||||
bones/3/parent = 2
|
||||
bones/3/rest = Transform3D(1, -6.30587e-06, 4.7635e-06, 6.81277e-06, 0.993339, -0.115231, -4.00514e-06, 0.115231, 0.993339, -4.47471e-10, 13.4588, 9.85582e-07)
|
||||
bones/3/enabled = true
|
||||
bones/3/position = Vector3(-4.47471e-10, 13.4588, 9.85582e-07)
|
||||
bones/3/rotation = Quaternion(0.182886, -0.00347211, 0.0505617, 0.981827)
|
||||
bones/3/rotation = Quaternion(0.182929, -0.00345339, 0.0505595, 0.981819)
|
||||
bones/3/scale = Vector3(1, 1, 1)
|
||||
bones/4/name = "mixamorig_Neck"
|
||||
bones/4/parent = 3
|
||||
bones/4/rest = Transform3D(1, 6.23025e-11, 3.44099e-12, -6.2282e-11, 0.999984, -0.0056553, -3.79327e-12, 0.0056553, 0.999984, 2.54808e-05, 15.0277, 0.877905)
|
||||
bones/4/enabled = true
|
||||
bones/4/position = Vector3(2.54808e-05, 15.0277, 0.877905)
|
||||
bones/4/rotation = Quaternion(-0.145632, 0.0325123, -0.0330231, 0.988253)
|
||||
bones/4/rotation = Quaternion(-0.145638, 0.0325141, -0.0330159, 0.988252)
|
||||
bones/4/scale = Vector3(1, 1, 1)
|
||||
bones/5/name = "mixamorig_Head"
|
||||
bones/5/parent = 4
|
||||
bones/5/rest = Transform3D(1, -2.18268e-11, 3.38872e-13, 2.18268e-11, 1, 1.21453e-08, -3.38872e-13, -1.21453e-08, 1, 2.55988e-06, 10.3218, 3.14243)
|
||||
bones/5/enabled = true
|
||||
bones/5/position = Vector3(2.55988e-06, 10.3218, 3.14243)
|
||||
bones/5/rotation = Quaternion(-0.0210308, 0.237778, -0.0423015, 0.97017)
|
||||
bones/5/rotation = Quaternion(-0.0210257, 0.237777, -0.0423074, 0.97017)
|
||||
bones/5/scale = Vector3(1, 1, 1)
|
||||
bones/6/name = "mixamorig_HeadTop_End"
|
||||
bones/6/parent = 5
|
||||
@ -991,28 +995,28 @@ bones/7/parent = 3
|
||||
bones/7/rest = Transform3D(-0.20123, 0.979319, -0.0210089, 0.00976801, -0.0194404, -0.999763, -0.979495, -0.201387, -0.00565398, 6.10582, 9.10625, 0.75706)
|
||||
bones/7/enabled = true
|
||||
bones/7/position = Vector3(6.10582, 9.10625, 0.75706)
|
||||
bones/7/rotation = Quaternion(-0.541246, -0.520049, 0.463313, -0.471107)
|
||||
bones/7/rotation = Quaternion(-0.541247, -0.520049, 0.463313, -0.471107)
|
||||
bones/7/scale = Vector3(1, 1, 1)
|
||||
bones/8/name = "mixamorig_LeftArm"
|
||||
bones/8/parent = 7
|
||||
bones/8/rest = Transform3D(0.979535, -0.20123, -0.00422908, 0.201275, 0.979318, 0.0205813, 2.98023e-08, -0.0210113, 0.999779, 1.2517e-06, 12.9223, 2.02477e-05)
|
||||
bones/8/enabled = true
|
||||
bones/8/position = Vector3(9.33429e-06, 12.9223, -7.56018e-06)
|
||||
bones/8/rotation = Quaternion(0.336008, -0.378768, 0.36516, 0.781212)
|
||||
bones/8/rotation = Quaternion(0.33598, -0.378796, 0.365236, 0.781174)
|
||||
bones/8/scale = Vector3(1, 1, 1)
|
||||
bones/9/name = "mixamorig_LeftForeArm"
|
||||
bones/9/parent = 8
|
||||
bones/9/rest = Transform3D(1, 2.3344e-08, 1.63133e-08, -2.3344e-08, 1, -1.23929e-06, -1.63133e-08, 1.23929e-06, 1, 1.34292e-05, 27.4047, 1.27254e-05)
|
||||
bones/9/enabled = true
|
||||
bones/9/position = Vector3(3.76439e-06, 27.4047, 1.46218e-05)
|
||||
bones/9/rotation = Quaternion(0.5427, -0.586184, 0.376246, 0.469366)
|
||||
bones/9/rotation = Quaternion(0.54268, -0.586202, 0.376231, 0.469379)
|
||||
bones/9/scale = Vector3(1, 1, 1)
|
||||
bones/10/name = "mixamorig_LeftHand"
|
||||
bones/10/parent = 9
|
||||
bones/10/rest = Transform3D(1, 1.28733e-07, -1.28721e-07, -1.28733e-07, 1, -1.41334e-06, 1.28721e-07, 1.41334e-06, 1, -8.88504e-08, 27.6145, 1.39405e-06)
|
||||
bones/10/enabled = true
|
||||
bones/10/position = Vector3(-8.88504e-08, 27.6145, 1.39405e-06)
|
||||
bones/10/rotation = Quaternion(-0.00451409, -0.370335, 0.0741844, 0.92592)
|
||||
bones/10/rotation = Quaternion(-0.00450489, -0.370333, 0.0741756, 0.925922)
|
||||
bones/10/scale = Vector3(1, 1, 1)
|
||||
bones/11/name = "mixamorig_LeftHandThumb1"
|
||||
bones/11/parent = 10
|
||||
@ -1159,28 +1163,28 @@ bones/31/parent = 3
|
||||
bones/31/rest = Transform3D(-0.201228, -0.979319, 0.0210167, -0.00976938, -0.0194482, -0.999763, 0.979496, -0.201385, -0.00565398, -6.1057, 9.10635, 0.757074)
|
||||
bones/31/enabled = true
|
||||
bones/31/position = Vector3(-6.1057, 9.10635, 0.757074)
|
||||
bones/31/rotation = Quaternion(0.564829, -0.510698, 0.433, 0.482355)
|
||||
bones/31/rotation = Quaternion(0.564823, -0.510705, 0.433008, 0.482347)
|
||||
bones/31/scale = Vector3(1, 1, 1)
|
||||
bones/32/name = "mixamorig_RightArm"
|
||||
bones/32/parent = 31
|
||||
bones/32/rest = Transform3D(0.979535, 0.201228, 0.00423029, -0.201272, 0.979319, 0.020588, 6.65896e-08, -0.0210181, 0.999779, -3.57628e-07, 12.9223, 1.30742e-05)
|
||||
bones/32/enabled = true
|
||||
bones/32/position = Vector3(1.38714e-05, 12.9223, 9.93985e-06)
|
||||
bones/32/rotation = Quaternion(0.121488, 0.0685437, -0.457339, 0.878284)
|
||||
bones/32/rotation = Quaternion(0.121459, 0.0686106, -0.457335, 0.878285)
|
||||
bones/32/scale = Vector3(1, 1, 1)
|
||||
bones/33/name = "mixamorig_RightForeArm"
|
||||
bones/33/parent = 32
|
||||
bones/33/rest = Transform3D(1, -5.84677e-08, 3.90717e-08, 5.84677e-08, 1, -4.48963e-07, -3.90717e-08, 4.48963e-07, 1, -7.61224e-07, 27.4047, -2.11461e-06)
|
||||
bones/33/enabled = true
|
||||
bones/33/position = Vector3(-7.61224e-07, 27.4047, -2.11461e-06)
|
||||
bones/33/rotation = Quaternion(0.0823296, 0.139543, -0.797481, 0.581183)
|
||||
bones/33/rotation = Quaternion(0.0823482, 0.139563, -0.797482, 0.581175)
|
||||
bones/33/scale = Vector3(1, 1, 1)
|
||||
bones/34/name = "mixamorig_RightHand"
|
||||
bones/34/parent = 33
|
||||
bones/34/rest = Transform3D(1, -4.75946e-09, 4.7599e-09, 4.75946e-09, 1, 5.92689e-07, -4.7599e-09, -5.92689e-07, 1, 1.32686e-05, 27.6144, -7.82493e-06)
|
||||
bones/34/enabled = true
|
||||
bones/34/position = Vector3(1.72122e-05, 27.6145, 1.36209e-05)
|
||||
bones/34/rotation = Quaternion(-0.144782, 0.19281, -0.064513, 0.968349)
|
||||
bones/34/rotation = Quaternion(-0.144791, 0.192789, -0.0644966, 0.968353)
|
||||
bones/34/scale = Vector3(1, 1, 1)
|
||||
bones/35/name = "mixamorig_RightHandThumb1"
|
||||
bones/35/parent = 34
|
||||
@ -1334,21 +1338,21 @@ bones/56/parent = 55
|
||||
bones/56/rest = Transform3D(0.99993, 0.0118315, 0.000579731, -0.0118447, 0.999273, 0.0362199, -0.000150774, -0.0362242, 0.999344, -8.63573e-07, 40.5994, -7.20611e-08)
|
||||
bones/56/enabled = true
|
||||
bones/56/position = Vector3(-8.63573e-07, 40.5994, -7.20611e-08)
|
||||
bones/56/rotation = Quaternion(-0.766637, -0.00443554, -0.0623044, 0.639036)
|
||||
bones/56/rotation = Quaternion(-0.766639, -0.00443562, -0.0623043, 0.639033)
|
||||
bones/56/scale = Vector3(1, 1, 1)
|
||||
bones/57/name = "mixamorig_LeftFoot"
|
||||
bones/57/parent = 56
|
||||
bones/57/rest = Transform3D(0.998342, -0.0264272, 0.0511338, 0.0574903, 0.414367, -0.908292, 0.00281544, 0.909726, 0.415199, -4.32148e-07, 42.099, -4.07919e-07)
|
||||
bones/57/enabled = true
|
||||
bones/57/position = Vector3(-4.32148e-07, 42.099, -4.07919e-07)
|
||||
bones/57/rotation = Quaternion(0.547634, 0.0625633, 0.0248344, 0.834006)
|
||||
bones/57/rotation = Quaternion(0.547639, 0.0625631, 0.0248342, 0.834003)
|
||||
bones/57/scale = Vector3(1, 1, 1)
|
||||
bones/58/name = "mixamorig_LeftToeBase"
|
||||
bones/58/parent = 57
|
||||
bones/58/rest = Transform3D(0.997412, 0.0150935, -0.0702888, -0.0447132, 0.89584, -0.442121, 0.0562943, 0.444119, 0.894197, 1.14934e-06, 15.7216, 8.9407e-07)
|
||||
bones/58/enabled = true
|
||||
bones/58/position = Vector3(1.14934e-06, 15.7216, 8.9407e-07)
|
||||
bones/58/rotation = Quaternion(0.442835, -0.0259829, -0.0121603, 0.896144)
|
||||
bones/58/rotation = Quaternion(0.442825, -0.0259829, -0.0121608, 0.896149)
|
||||
bones/58/scale = Vector3(1, 1, 1)
|
||||
bones/59/name = "mixamorig_LeftToe_End"
|
||||
bones/59/parent = 58
|
||||
@ -1362,28 +1366,28 @@ bones/60/parent = 0
|
||||
bones/60/rest = Transform3D(-0.999981, -0.00611455, -7.52684e-05, 0.00611501, -0.999901, -0.0126672, 2.1931e-06, -0.0126674, 0.99992, -9.12503, -6.6556, -0.0553527)
|
||||
bones/60/enabled = true
|
||||
bones/60/position = Vector3(-9.12503, -6.6556, -0.0553527)
|
||||
bones/60/rotation = Quaternion(-0.0339464, 0.334675, 0.92684, -0.166755)
|
||||
bones/60/rotation = Quaternion(-0.0339455, 0.334676, 0.92684, -0.166754)
|
||||
bones/60/scale = Vector3(1, 1, 1)
|
||||
bones/61/name = "mixamorig_RightLeg"
|
||||
bones/61/parent = 60
|
||||
bones/61/rest = Transform3D(0.99993, -0.0118315, -0.000580536, 0.0118448, 0.999271, 0.0362854, 0.000150802, -0.0362897, 0.999341, 3.28565e-07, 40.5995, 1.49012e-08)
|
||||
bones/61/enabled = true
|
||||
bones/61/position = Vector3(3.28565e-07, 40.5995, 1.49012e-08)
|
||||
bones/61/rotation = Quaternion(-0.581827, -0.0846288, -0.016647, 0.808726)
|
||||
bones/61/rotation = Quaternion(-0.581827, -0.0846291, -0.0166473, 0.808726)
|
||||
bones/61/scale = Vector3(1, 1, 1)
|
||||
bones/62/name = "mixamorig_RightFoot"
|
||||
bones/62/parent = 61
|
||||
bones/62/rest = Transform3D(0.998342, 0.0264271, -0.0511337, -0.0574901, 0.414337, -0.908306, -0.0028173, 0.90974, 0.415169, 2.71709e-07, 42.099, -1.01514e-07)
|
||||
bones/62/enabled = true
|
||||
bones/62/position = Vector3(2.71709e-07, 42.099, -1.01514e-07)
|
||||
bones/62/rotation = Quaternion(0.725848, 0.0249634, -0.120039, 0.67684)
|
||||
bones/62/rotation = Quaternion(0.725845, 0.0249646, -0.120038, 0.676843)
|
||||
bones/62/scale = Vector3(1, 1, 1)
|
||||
bones/63/name = "mixamorig_RightToeBase"
|
||||
bones/63/parent = 62
|
||||
bones/63/rest = Transform3D(0.997471, -0.0150664, 0.0694586, 0.044322, 0.895832, -0.442177, -0.0555612, 0.444137, 0.894234, 1.55898e-07, 15.7216, 3.8445e-06)
|
||||
bones/63/enabled = true
|
||||
bones/63/position = Vector3(1.55898e-07, 15.7216, 3.8445e-06)
|
||||
bones/63/rotation = Quaternion(0.245405, 0.0480431, 0.0189418, 0.968044)
|
||||
bones/63/rotation = Quaternion(0.245405, 0.0480429, 0.0189423, 0.968044)
|
||||
bones/63/scale = Vector3(1, 1, 1)
|
||||
bones/64/name = "mixamorig_RightToe_End"
|
||||
bones/64/parent = 63
|
||||
@ -1405,12 +1409,12 @@ 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.8195, 12.756, -10.5629, 98.619, 1.31501, 0.290643, -87.4647)
|
||||
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, -3.10511e-07, -1.76951e-08, 0.0499957)
|
||||
body_offset = Transform3D(100, -0.0695229, -0.00863039, -2.57492e-05, 12.2744, -99.2438, 0.0700531, 99.2438, 12.2744, 0.000462532, 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
|
||||
@ -1425,12 +1429,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_0ptuo")
|
||||
|
||||
[node name="Physical Bone mixamorig_Spine" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(80.9399, -58.5481, -4.56548, 57.6062, 80.6673, -13.2029, 11.4129, 8.0564, 99.0194, 2.40579, 0.974135, -98.2037)
|
||||
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.79713e-09, -8.36489e-09, 0.05866)
|
||||
body_offset = Transform3D(100, 2.28882e-05, -4.76837e-06, 9.53674e-07, 3.24249e-05, -100, -2.28882e-05, 100, 3.05176e-05, 0, 5.866, -9.53674e-07)
|
||||
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
|
||||
@ -1445,12 +1449,12 @@ transform = Transform3D(0.0318071, 3.86358e-14, 4.9738e-14, -2.13163e-14, -1.629
|
||||
shape = SubResource("CapsuleShape3D_126jt")
|
||||
|
||||
[node name="Physical Bone mixamorig_Head" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D" groups=["target"]]
|
||||
transform = Transform3D(-97.8018, 4.48619, 20.364, -15.845, -79.4738, -58.5905, 13.5555, -60.5292, 78.4376, -13.8186, 23.4966, -143.637)
|
||||
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, -3.0589e-07, 7.45058e-08, 0.0981534)
|
||||
body_offset = Transform3D(-100, -0.00221062, -0.000787735, -1.19209e-05, 33.8066, -94.1122, 0.00233173, -94.1122, -33.8066, 4.673e-05, 9.23743, 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
|
||||
@ -1465,12 +1469,12 @@ 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.116, 14.0289, -48.8593, -45.502, 64.1247, -61.7867, 22.6629, 75.4402, 61.605, 16.193, 31.0319, -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.07897e-08, 1.8395e-07, 0.137023)
|
||||
body_offset = Transform3D(100, -6.10352e-05, -4.57764e-05, 7.05719e-05, 100, -2.28882e-05, 1.90735e-05, 3.8147e-06, 100, 1.33514e-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
|
||||
@ -1482,12 +1486,12 @@ transform = Transform3D(0.01, 0, 0, 0, 0.00997432, -0.000716193, 0, 0.000716193,
|
||||
shape = SubResource("CapsuleShape3D_krlof")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftForeArm" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-48.2559, -12.0561, 86.7526, -78.7314, -37.4274, -48.9954, 38.3762, -91.9448, 8.56898, 1.36465, 46.9037, -104.66)
|
||||
transform = Transform3D(-48.2566, -12.058, 86.752, -78.7312, -37.4258, -48.997, 38.3757, -91.9452, 8.56699, 1.36483, 46.9033, -104.66)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.36614e-07, -2.63348e-09, 0.138072)
|
||||
body_offset = Transform3D(100, 7.62939e-06, -5.34058e-05, -3.05176e-05, 0, -100, 7.62939e-06, 100, 1.90735e-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
|
||||
@ -1499,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.1154, -98.6768, 13.4087, 23.9481, -10.8975, -96.4766, 96.6613, 12.0054, 22.6379, -10.9687, 56.2244, -106.443)
|
||||
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.58325e-08, -8.61473e-08, 0.0264902)
|
||||
body_offset = Transform3D(-58.5197, 57.9894, 56.6805, 1.52588e-05, 69.899, -71.5131, -81.0891, -41.8493, -40.9047, -1.50147, 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
|
||||
@ -1515,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.7225, 72.891, 61.1803, 93.7858, -34.0919, -6.4783, 16.1354, 59.3687, -78.8353, -27.5288, -1.29731, -110.131)
|
||||
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, -7.5515e-08, 2.72834e-07, 0.137023)
|
||||
body_offset = Transform3D(100, 0, 1.33514e-05, 1.00136e-05, 8.10623e-06, -100, 3.8147e-06, 100, 2.36034e-05, 5.72205e-06, 13.7023, -3.05176e-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
|
||||
@ -1532,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.3602, 37.4045, 89.4846, -25.0076, 91.5666, -31.467, -93.7081, -14.7125, 31.6598, -48.2673, 3.93511, -103.7)
|
||||
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, 5.66977e-07, -2.58653e-07, 0.138072)
|
||||
body_offset = Transform3D(100, 2.47955e-05, -2.38419e-05, -3.24249e-05, 100, 3.62396e-05, 4.24385e-05, -2.86102e-05, 100, -5.34058e-05, 2.08616e-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
|
||||
@ -1549,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.0766, -24.8072, -38.0785, 5.05096, 88.6727, -45.9525, 45.1647, 39.0096, 80.2396, -24.5741, 26.0933, -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.3935e-07, 3.21772e-07, 0.0264905)
|
||||
body_offset = Transform3D(-58.5197, -57.9893, -56.6806, -7.62939e-06, 69.8991, -71.513, 81.0891, -41.8492, -40.9048, 1.5015, 1.89439, 1.08362)
|
||||
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
|
||||
@ -1565,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.73898, -23.4202, 64.2555, -72.957, 14.1919, -71.9806, -67.9513, 5.83709, 19.601, -60.9755)
|
||||
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, 8.70518e-08, 2.19423e-07, 0.202997)
|
||||
body_offset = Transform3D(100, -7.82013e-05, 2.28882e-05, 2.86102e-05, 5.72205e-05, -100, 7.62939e-05, 100, 6.10352e-05, -1.33514e-05, 20.2997, -3.43323e-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
|
||||
@ -1582,12 +1586,12 @@ transform = Transform3D(0.01, 0, 0, 0, -4.37114e-10, 0.01, 0, -0.01, -4.37114e-1
|
||||
shape = SubResource("CapsuleShape3D_3cygo")
|
||||
|
||||
[node name="Physical Bone mixamorig_LeftLeg" type="PhysicalBone3D" parent="Body/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||
transform = Transform3D(-97.5216, -11.6195, -18.829, -22.0484, 58.1432, 78.315, 1.84803, 80.5255, -59.2641, 8.22949, 17.9262, -34.7068)
|
||||
transform = Transform3D(-97.5216, -11.6193, -18.8291, -22.0483, 58.1427, 78.3154, 1.84805, 80.5259, -59.2635, 8.22949, 17.9261, -34.7068)
|
||||
collision_layer = 8
|
||||
collision_mask = 9
|
||||
joint_type = 1
|
||||
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.01487e-09, -5.92223e-08, 0.210495)
|
||||
body_offset = Transform3D(100, -2.86102e-06, -1.90735e-06, 3.8147e-06, 1.14441e-05, -100, 3.8147e-06, 100, 1.90735e-05, 0, 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
|
||||
@ -1599,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.6711, -34.5298, 5.7808, -34.9452, 91.207, -21.4502, 2.13422, -22.1128, -97.5011, 11.7385, 3.12743, -14.5676)
|
||||
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, 8.32068e-08, 1.41355e-07, 0.0786084)
|
||||
body_offset = Transform3D(100, 2.28882e-05, 3.33786e-06, 8.10623e-06, -3.62396e-05, -100, -3.24249e-05, 100, -1.90735e-05, -8.58307e-06, 7.86084, -1.26362e-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
|
||||
@ -1615,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.6897, -51.5226, 18.4784, -50.5593, 59.8312, -62.161, 20.9711, -61.3649, -76.122, -11.4061, 7.37456, -61.6461)
|
||||
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, 4.97626e-08, 1.89829e-15, 0.202997)
|
||||
body_offset = Transform3D(100, -3.8147e-06, -5.72205e-06, -7.62939e-06, -3.05176e-05, -100, -3.8147e-06, 100, 0, -3.8147e-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
|
||||
@ -1632,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.8174, -23.5085, -31.8891, -36.0103, 83.0804, 42.437, 16.5174, 50.4479, -84.7478, -8.44469, 11.0604, -28.3545)
|
||||
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, 1.71532e-07, -2.44424e-07, 0.210495)
|
||||
body_offset = Transform3D(100, -8.7738e-05, -1.23978e-05, -4.76837e-06, 8.01086e-05, -100, 8.96454e-05, 100, 5.72205e-05, -1.45435e-05, 21.0495, 1.23978e-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
|
||||
@ -1649,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.3349, 43.8369, -46.855, 42.4437, -77.4799, -5.17492, -88.8709, -45.5542, -5.17813, 8.21814, -6.93456)
|
||||
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, -7.21032e-08, -1.68616e-08, 0.078608)
|
||||
body_offset = Transform3D(100, 0, -3.8147e-06, -7.62939e-06, -0.000114441, -100, -3.8147e-06, 100, -8.7738e-05, 7.51019e-06, 7.8608, 8.58307e-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
|
||||
@ -1668,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")
|
||||
|
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,17 +0,0 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
|
||||
var health = 100
|
||||
var alive = true
|
||||
func take_damage(damage: int):
|
||||
print("I")
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if health == 0:
|
||||
alive = false
|
||||
var world: Node3D = find_parent("Map")
|
||||
var spawner: MultiplayerSpawner = world.find_child("ObjectSpawner").find_child("MultiplayerSpawner")
|
||||
var objects_root: Node3D = world.find_child("ObjectSpawner").find_child("Objects")
|
||||
#reparent(get_tree().get_root())
|
||||
$Dummy.die()
|
||||
#queue_free()
|
@ -1,16 +0,0 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://b7vj5j6wxqrfr"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/characters/npc/zombie/zombie.gd" id="1_2j0kt"]
|
||||
[ext_resource type="PackedScene" uid="uid://1txob6jskn5s" path="res://scenes/characters/blue/dummy.tscn" id="1_qd8fb"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_t4cyd"]
|
||||
height = 1.6
|
||||
|
||||
[node name="PlayerPlaceholder_Zombie" type="CharacterBody3D"]
|
||||
script = ExtResource("1_2j0kt")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.801503, -0.185051)
|
||||
shape = SubResource("CapsuleShape3D_t4cyd")
|
||||
|
||||
[node name="Dummy" parent="." instance=ExtResource("1_qd8fb")]
|
@ -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
File diff suppressed because one or more lines are too long
@ -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")]
|
||||
|
@ -1,9 +1,8 @@
|
||||
[gd_scene load_steps=79 format=4 uid="uid://dddu0t2sdcy8h"]
|
||||
[gd_scene load_steps=78 format=4 uid="uid://dddu0t2sdcy8h"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/maps/base/map_loader.gd" id="1_innhj"]
|
||||
[ext_resource type="Script" path="res://scenes/maps/base/spawn_controller.gd" id="2_1ss1b"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdcbn8mglqlyh" path="res://scenes/maps/tools/hit_detector.tscn" id="3_hjypr"]
|
||||
[ext_resource type="PackedScene" uid="uid://b7vj5j6wxqrfr" path="res://scenes/characters/npc/zombie/zombie.tscn" id="4_32d4x"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddwrs0so7swxn" path="res://scenes/characters/y-bot/character.tscn" id="3_nqyim"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_umuqw"]
|
||||
resource_name = "Material_146"
|
||||
@ -758,7 +757,6 @@ ambient_light_source = 3
|
||||
ambient_light_color = Color(1, 1, 1, 1)
|
||||
reflected_light_source = 2
|
||||
glow_enabled = true
|
||||
fog_enabled = true
|
||||
fog_density = 0.103
|
||||
fog_height = 1.5
|
||||
fog_height_density = 2.0
|
||||
@ -1026,8 +1024,5 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42.595, -0.0187502, -17.3639
|
||||
environment = SubResource("Environment_3ha0j")
|
||||
camera_attributes = SubResource("CameraAttributesPractical_402xp")
|
||||
|
||||
[node name="HitDetector" parent="." instance=ExtResource("3_hjypr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.1837, 9.29777, -7.02714)
|
||||
|
||||
[node name="Zombie" parent="." instance=ExtResource("4_32d4x")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.4367, -0.00937653, -3.80586)
|
||||
[node name="Character" parent="." instance=ExtResource("3_nqyim")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.46435, -0.00937462, 0.132427)
|
||||
|
@ -3,14 +3,10 @@ class_name HitDetector
|
||||
|
||||
var health = 5
|
||||
|
||||
@export var color: Color = Color(0, 0, 0)
|
||||
@export var color: Color = Color(0.0, 0.0, 0.0, 0)
|
||||
|
||||
var colors = [Color(1.0, 0.0, 0.0, 1.0),
|
||||
Color(0.0, 1.0, 0.0, 1.0),
|
||||
Color(0.0, 0.0, 1.0, 0.0)]
|
||||
|
||||
func hit(damage: int):
|
||||
color = Color(randf(), randf(), randf())
|
||||
color = Color(randf(), randf(), randf(), randi())
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@ -19,6 +15,6 @@ func _ready() -> void:
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
material_override.albedo_color = color
|
||||
material.albedo_color = color
|
||||
if health < 1:
|
||||
queue_free()
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://cdcbn8mglqlyh"]
|
||||
[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"]
|
||||
|
||||
@ -7,9 +7,7 @@ properties/0/path = NodePath("Box:color")
|
||||
properties/0/spawn = true
|
||||
properties/0/replication_mode = 1
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_petk4"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5m44n"]
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r26tj"]
|
||||
|
||||
[node name="HitDetector" type="Node3D"]
|
||||
|
||||
@ -17,8 +15,7 @@ properties/0/replication_mode = 1
|
||||
replication_config = SubResource("SceneReplicationConfig_8tws6")
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="." groups=["target"]]
|
||||
material_override = SubResource("StandardMaterial3D_petk4")
|
||||
use_collision = true
|
||||
collision_layer = 9
|
||||
material = SubResource("StandardMaterial3D_5m44n")
|
||||
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
|
||||
@ -22,7 +24,7 @@ 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
|
||||
@ -48,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,7 +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://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
|
||||
@ -106,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")
|
||||
@ -220,10 +223,9 @@ 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.37786)
|
||||
|
||||
[node name="Dummy" parent="ServerControlledNode" instance=ExtResource("5_16l76")]
|
||||
visible = false
|
||||
|
||||
[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"]
|
||||
|
@ -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():
|
||||
|
Loading…
x
Reference in New Issue
Block a user