26 lines
858 B
GDScript
26 lines
858 B
GDScript
extends Node3D
|
|
|
|
#Camera recoil variables
|
|
var currentRotation : Vector3
|
|
var targetRotation : Vector3
|
|
var baseRotationSpeed : float
|
|
var targetRotationSpeed : float
|
|
|
|
func _process(delta):
|
|
handleRecoil(delta)
|
|
|
|
func handleRecoil(delta):
|
|
#first phase, the camera will aim according the recoil values
|
|
#second phase, the camera back down to her initial rotation value
|
|
targetRotation = lerp(targetRotation, Vector3.ZERO, baseRotationSpeed * delta)
|
|
currentRotation = lerp(currentRotation, targetRotation, targetRotationSpeed * delta)
|
|
|
|
rotation = currentRotation
|
|
|
|
func setRecoilValues(baseRotSpeed : float, targRotSpeed : int):
|
|
baseRotationSpeed = baseRotSpeed
|
|
targetRotationSpeed = targRotSpeed
|
|
|
|
func addRecoil(recoilValue):
|
|
targetRotation += Vector3(recoilValue.x, randf_range(-recoilValue.y, recoilValue.y), randf_range(-recoilValue.z, recoilValue.z))
|