open-strike-2/scenes/_test/ragdoll/animated_skel.gd

40 lines
1.6 KiB
GDScript

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()