Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node3D
- @onready var player: CharacterBody3D = $"../.."
- @onready var yRotHolder: Node3D = $".."
- @onready var camOffset: Node3D = $CamOffset
- @onready var springArm: SpringArm3D = $SpringArm3D
- @export_range(0.001, 0.01, 0.001) var mouseSens : float
- @export var lerpSpeed : float
- var prevPos : float = 1.
- func _ready() -> void:
- DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- func _unhandled_input(event: InputEvent) -> void:
- if Input.is_action_just_pressed("ui_cancel"):
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- if Input.is_action_just_pressed("Shoot"):
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- if event is InputEventMouseMotion: #Mouse delta check, basically read mouse input
- yRotHolder.rotate_y(-event.relative.x * mouseSens) #Rotate player to update move direction
- self.rotate_x(-event.relative.y * mouseSens) #Rotate cam
- self.rotation.x = clamp(self.rotation.x, deg_to_rad(-70), deg_to_rad(60)) #Clamp cam
- func _process(delta: float) -> void:
- yRotHolder.global_position = player.get_global_transform_interpolated().origin
- prevPos = lerpf(prevPos, springArm.get_hit_length(), delta * lerpSpeed)
- camOffset.position.z = prevPos
Advertisement
Add Comment
Please, Sign In to add comment