extends Spatial var direction = Vector3.FORWARD var tx: int var was_target func _physics_process(delta): var vel = get_parent().get_linear_velocity() var target = get_parent().target if target: var target_pos = target.get_global_transform().origin look_at(target_pos, Vector3.UP) rotate_object_local(Vector3(0, 1, 0), PI) rotation.x = clamp(rotation.x, 0, rotation.x) if not was_target: pass else: vel.y = 0 if abs(vel.x) > 1.0 or abs(vel.z) > 1.0: direction = lerp(direction, -vel.normalized(), 0.5 * delta) global_transform.basis = get_rotation_from_direction(direction) was_target = target func get_rotation_from_direction(dir: Vector3) -> Basis: dir = dir.normalized() var x_axis = dir.cross(Vector3.UP) return Basis(x_axis, Vector3.UP, -dir) func _ready(): $ClippedCamera.add_exception(get_parent())