fix camera shake: use Tween instead of _process, remove rogue Camera2D from worldborder

main
Artur David 2026-06-18 10:37:02 +02:00
parent 4780d9ae36
commit 341e09d2a9
2 changed files with 21 additions and 18 deletions

View File

@ -1,6 +1,5 @@
[gd_scene format=4 uid="uid://7vohdw0xop0g"]
[ext_resource type="Script" uid="uid://coplu13jpw4xq" path="res://scripts/camera_2d.gd" id="1_cdr13"]
[ext_resource type="Texture2D" uid="uid://50fc7a64032e" path="res://assets/tileset/PNG/Water_coasts.png" id="2_eppfv"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_lvc68"]
@ -773,12 +772,6 @@ sources/0 = SubResource("TileSetAtlasSource_lvc68")
[node name="Worldborder" type="Node2D" unique_id=985455729]
[node name="Camera2D" type="Camera2D" parent="." unique_id=1311217942]
position = Vector2(1, 5)
anchor_mode = 0
zoom = Vector2(2.11, 2.11)
script = ExtResource("1_cdr13")
[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=1270876518]
tile_map_data = PackedByteArray("AAD//wAAAAAYAA4AAAD//wEAAAAYAA4AAAD//wIAAAAYAA4AAAD//wMAAAAYAA4AAAD//wQAAAAYAA4AAAD//w4AAAAYAA4AAAD//w0AAAAYAA4AAAD//wwAAAAYAA4AAAD//wsAAAAYAA4AAAD//woAAAAYAA4AAAD//wkAAAAYAA4AAAD//wgAAAAYAA4AAAD//wcAAAAYAA4AAAD//wYAAAAYAA4AAAD//wUAAAAYAA4AAAD//w8AAAAYAA4AAAD//xAAAAAYAA4AAAD//xEAAAAYAA4AAAD//xIAAAAYAA4AAAD//xMAAAAYAA4AAAD//xQAAAAYAA4AAAD//xUAAAAYAA4AAAD//xYAAAAYAA4AAAAAABYAAAAYAA4AAAABABYAAAAYAA4AAAACABYAAAAYAA4AAAADABYAAAAYAA4AAAAEABYAAAAYAA4AAAAFABYAAAAYAA4AAAAGABYAAAAYAA4AAAAHABYAAAAYAA4AAAAIABYAAAAYAA4AAAAJABYAAAAYAA4AAAAKABYAAAAYAA4AAAALABYAAAAYAA4AAAAMABYAAAAYAA4AAAANABYAAAAYAA4AAAAOABYAAAAYAA4AAAAPABYAAAAYAA4AAAAQABYAAAAYAA4AAAARABYAAAAYAA4AAAASABYAAAAYAA4AAAATABYAAAAYAA4AAAAUABYAAAAYAA4AAAAVABYAAAAYAA4AAAAWABYAAAAYAA4AAAAXABYAAAAYAA4AAAAYABYAAAAYAA4AAAAZABYAAAAYAA4AAAAaABYAAAAYAA4AAAAbABYAAAAYAA4AAAAcABYAAAAYAA4AAAAdABYAAAAYAA4AAAAeABYAAAAYAA4AAAAfABYAAAAYAA4AAAAgABYAAAAYAA4AAAAhABYAAAAYAA4AAAAiABYAAAAYAA4AAAAjABYAAAAYAA4AAAAkABYAAAAYAA4AAAAlABYAAAAYAA4AAAAmABYAAAAYAA4AAAAmABUAAAAYAA4AAAAmABQAAAAYAA4AAAAmABMAAAAYAA4AAAAmABIAAAAYAA4AAAAmABEAAAAYAA4AAAAmABAAAAAYAA4AAAAmAA8AAAAYAA4AAAAmAA4AAAAYAA4AAAAmAA0AAAAYAA4AAAAmAAwAAAAYAA4AAAAmAAsAAAAYAA4AAAAmAAoAAAAYAA4AAAAmAAkAAAAYAA4AAAAmAAgAAAAYAA4AAAAmAAcAAAAYAA4AAAAmAAYAAAAYAA4AAAAmAAUAAAAYAA4AAAAmAAQAAAAYAA4AAAAmAAMAAAAYAA4AAAAmAAIAAAAYAA4AAAAmAAEAAAAYAA4AAAAmAAAAAAAYAA4AAAAmAP//AAAYAA4AAAAlAP//AAAYAA4AAAAkAP//AAAYAA4AAAAjAP//AAAYAA4AAAAiAP//AAAYAA4AAAAhAP//AAAYAA4AAAAgAP//AAAYAA4AAAAfAP//AAAYAA4AAAAeAP//AAAYAA4AAAAdAP//AAAYAA4AAAAcAP//AAAYAA4AAAAbAP//AAAYAA4AAAAaAP//AAAYAA4AAAAZAP//AAAYAA4AAAAYAP//AAAYAA4AAAAXAP//AAAYAA4AAAAWAP//AAAYAA4AAAAVAP//AAAYAA4AAAAUAP//AAAYAA4AAAATAP//AAAYAA4AAAASAP//AAAYAA4AAAARAP//AAAYAA4AAAAQAP//AAAYAA4AAAAPAP//AAAYAA4AAAAOAP//AAAYAA4AAAANAP//AAAYAA4AAAAMAP//AAAYAA4AAAALAP//AAAYAA4AAAAKAP//AAAYAA4AAAAJAP//AAAYAA4AAAAIAP//AAAYAA4AAAAHAP//AAAYAA4AAAAGAP//AAAYAA4AAAAFAP//AAAYAA4AAAAEAP//AAAYAA4AAAADAP//AAAYAA4AAAACAP//AAAYAA4AAAABAP//AAAYAA4AAAAAAP//AAAYAA4AAAD/////AAAYAA4AAAA=")
tile_set = SubResource("TileSet_jveav")

View File

@ -1,16 +1,26 @@
extends Camera2D
var shake_duration = 0.0
var shake_intensity = 5.0
var shake_tween: Tween
func shake(duration: float, intensity: float) -> void:
shake_duration = duration
shake_intensity = intensity
if shake_tween and shake_tween.is_valid():
shake_tween.kill()
func _process(delta: float) -> void:
if shake_duration > 0:
shake_duration -= delta
offset = Vector2(randf_range(-shake_intensity, shake_intensity),
randf_range(-shake_intensity, shake_intensity))
else:
offset = Vector2.ZERO
offset = Vector2.ZERO
shake_tween = create_tween()
shake_tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
var steps = 20
var step_duration = duration / steps
for i in steps:
var t = float(i) / float(steps)
var decay = 1.0 - t
var si = intensity * decay
var target = Vector2(
randf_range(-si, si),
randf_range(-si, si)
)
shake_tween.tween_property(self, "offset", target, step_duration)
shake_tween.tween_property(self, "offset", Vector2.ZERO, 0.05)