Files
2025-11-28 18:10:23 +08:00

20 lines
830 B
GDScript

extends Node3D
@export var camera: Camera3D = null
@export var rotation_speed: float = 5.0
func _process(delta):
if camera:
var mouse_pos = get_viewport().get_mouse_position()
var ray_origin = camera.project_ray_origin(mouse_pos)
var ray_dir = camera.project_ray_normal(mouse_pos)
var space_state = get_world_3d().direct_space_state
var query = PhysicsRayQueryParameters3D.create(ray_origin, ray_origin + ray_dir * 1000.0)
var result = space_state.intersect_ray(query)
var target_position = result["position"] if result else ray_origin + ray_dir * 10.0
var direction = (target_position - global_transform.origin).normalized()
var target_rotation = Quaternion(Vector3.FORWARD, direction)
transform.basis = Basis(transform.basis.get_rotation_quaternion().slerp(target_rotation, delta * rotation_speed))