Files
project-thor/Scripts/camera_3d.gd
Nikolai Fesenko 69d384345a camera update
2025-08-13 15:03:14 +02:00

46 lines
1.5 KiB
GDScript

extends Camera3D
@export var rayLength: float
@export var camera_speed: float
@export var ownRigidBody: RigidBody3D
@export var endZoom: Node3D
var debugLabel
var global_delta
var default_pos
func _ready() -> void:
default_pos = self.position
debugLabel = $DebugLabel1
func _process(delta: float) -> void:
global_delta = delta
look_at(ownRigidBody.position)
self.position.y = -0.1 * pow(self.position.z,2) + 40
if(Input.is_action_just_released("move_camera_enable")):
ownRigidBody.angular_velocity = Vector3.ZERO
if(Input.is_action_pressed("move_camera_enable")):
var mouseV = Input.get_last_mouse_velocity()
ownRigidBody.angular_velocity.y = -mouseV.x * delta / camera_speed
self.position.z += mouseV.y * delta / 10.0
#ownRigidBody.angular_velocity.x = mouseV.y * delta / camera_speed
#print(self.position.dot(ownRigidBody.position))
func _input(event: InputEvent) -> void:
if(event.is_action("camera_zoom")):
if (event.as_text() == "Mouse Wheel Up"):
self.position = self.position.lerp(Vector3.ZERO,global_delta * 5.0)
else:
self.position = self.position.lerp(endZoom.position,global_delta * 5.0)
func getGlobalRayTargetObject():
var space = get_world_3d().direct_space_state
var mousePos = get_viewport().get_mouse_position()
var from = self.project_ray_origin(mousePos)
var to = from + self.project_ray_normal(mousePos) * rayLength
var query = PhysicsRayQueryParameters3D.create(from,to)
var collison = space.intersect_ray(query)
return collison