Files
fps_project_1/scripts/dead_cam.gd
2024-08-07 08:27:01 -05:00

57 lines
1.7 KiB
GDScript

extends Node3D
@export var MOVE_SPEED = 15
@export var CAMERA_LOOK_SPEED = 20
@export var FOV_CHANGE_SPEED = 200
@onready var look_ray = $LookRay
@onready var camera = $Camera3D
@onready var timer = $Timer
@onready var level_control = get_tree().current_scene
var target : Node
var respawn_position
var respawn_rotation
var respawn_fov
var camera_start_fov
var respawn = false
# Called when the node enters the scene tree for the first time.
func _ready():
camera_start_fov = camera.fov
timer.start()
for i in target.outline_meshes:
print(i)
i.visible = true
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
# Move towards and look at target
if target != null and respawn == false:
#calculate move direction
var target_pos_adjusted = Vector3(target.position.x -2,target.position.y + 4,target.position.z -2)
#camera.fov = lerp(respawn_fov,10.0,delta * FOV_CHANGE_SPEED)
position = lerp(position,target_pos_adjusted,delta * MOVE_SPEED)
look_ray.look_at(Vector3(target.global_position), Vector3.UP)
camera.rotation = lerp(camera.rotation,look_ray.rotation,delta * CAMERA_LOOK_SPEED)
elif respawn == true:
position = lerp(position,respawn_position,delta * MOVE_SPEED)
camera.rotation = lerp(camera.rotation,Vector3(0,0,0),delta * CAMERA_LOOK_SPEED)
camera.global_transform.basis = lerp(camera.global_transform.basis,respawn_rotation,delta * CAMERA_LOOK_SPEED)
#camera.fov = lerp(camera.fov,respawn_fov,delta * FOV_CHANGE_SPEED)
if abs(position.x - respawn_position.x) <=.2:
reload_level()
if Input.is_action_just_pressed("escape"):
get_tree().quit()
func _on_timer_timeout():
respawn = true
func reload_level():
get_tree().reload_current_scene()