]> Untitled Git - william-skin.git/blobdiff - TrackingBone3D_head.gd
Track Node3D objects instead of Vector3 so targets aren't static
[william-skin.git] / TrackingBone3D_head.gd
index c1d39138e9b1a93230184d9f28a7dc2c872cc6d4..6d522b3069981c4d47ce21adc80159d08548346d 100644 (file)
@@ -4,7 +4,7 @@ class_name TrackingBone3D_head
 extends SkeletonModifier3D
 
 @export_enum(" ") var bone: String
-@export var target: Vector3 = Vector3(0, 0, 0)
+@export var target: Node3D = null
 @export var influence_lerp_seconds: float = 0.5
 @export var rotation_lerp_weight: float = 0.5
 
@@ -47,9 +47,12 @@ func _interpolate_influence(weight: float) -> void:
 
 
 func _process_modification() -> void:
+       if target == null:
+               return
+
        var current_pose: Transform3D = _skeleton.global_transform * _skeleton.get_bone_global_pose(_bone_idx)
        current_pose.basis = old_current_pose.basis
-       var target_pose: Transform3D  = current_pose.looking_at(target, Vector3.UP)
+       var target_pose: Transform3D  = current_pose.looking_at(target.global_position, Vector3.UP)
        
        # TODO: replace this specific code with general purpose modifier
        var axis: Vector3 = target_pose.basis.y