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