Guest User

Untitled

a guest
Sep 15th, 2025
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
GDScript 1.24 KB | Gaming | 0 0
  1. extends Node3D
  2. @onready var player: CharacterBody3D = $"../.."
  3. @onready var yRotHolder: Node3D = $".."
  4. @onready var camOffset: Node3D = $CamOffset
  5. @onready var springArm: SpringArm3D = $SpringArm3D
  6.  
  7. @export_range(0.001, 0.01, 0.001) var mouseSens : float
  8. @export var lerpSpeed : float
  9.  
  10. var prevPos : float = 1.
  11.  
  12. func _ready() -> void:
  13.     DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
  14.    
  15.     Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
  16.  
  17. func _unhandled_input(event: InputEvent) -> void:
  18.     if Input.is_action_just_pressed("ui_cancel"):
  19.         Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
  20.    
  21.     if Input.is_action_just_pressed("Shoot"):
  22.         Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
  23.    
  24.     if event is InputEventMouseMotion: #Mouse delta check, basically read mouse input
  25.         yRotHolder.rotate_y(-event.relative.x * mouseSens) #Rotate player to update move direction
  26.        
  27.         self.rotate_x(-event.relative.y * mouseSens) #Rotate cam
  28.         self.rotation.x = clamp(self.rotation.x, deg_to_rad(-70), deg_to_rad(60)) #Clamp cam
  29.  
  30. func _process(delta: float) -> void:
  31.     yRotHolder.global_position = player.get_global_transform_interpolated().origin
  32.    
  33.     prevPos = lerpf(prevPos, springArm.get_hit_length(), delta * lerpSpeed)
  34.     camOffset.position.z = prevPos
Advertisement
Add Comment
Please, Sign In to add comment