fix camera shake: use Tween instead of _process, remove rogue Camera2D from worldborder
parent
4780d9ae36
commit
341e09d2a9
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue