Improved camera
This commit is contained in:
26
client/camera/CameraShake.gd
Normal file
26
client/camera/CameraShake.gd
Normal file
@ -0,0 +1,26 @@
|
||||
extends Node3D
|
||||
|
||||
@export var shake_strength := 1.0
|
||||
@export var shake_decay := 0.8
|
||||
@export var shake_noise: Noise
|
||||
|
||||
var trauma := 0.0
|
||||
var trauma_time := 0.0
|
||||
|
||||
func _process(delta):
|
||||
if trauma:
|
||||
trauma = max(trauma - shake_decay * delta, 0)
|
||||
trauma_time += 4096 * delta
|
||||
_shake(trauma_time)
|
||||
else:
|
||||
rotation = Vector3.ZERO
|
||||
trauma_time = 0
|
||||
|
||||
func _shake(time):
|
||||
var trauma_sq := trauma * trauma
|
||||
rotation.x += shake_noise.get_noise_2d(time, 0) * trauma_sq * shake_strength
|
||||
rotation.y += shake_noise.get_noise_2d(time, 1) * trauma_sq * shake_strength
|
||||
rotation.z += shake_noise.get_noise_2d(time, 2) * trauma_sq * shake_strength
|
||||
|
||||
func add_shake(amount: float):
|
||||
trauma = min(trauma + amount, 1.0)
|
Reference in New Issue
Block a user