Tenho um problema em que minha condição if funciona, mas encerra sua função em apenas um momento.
var speed = 75
var dir: Vector2 = Vector2.ZERO
var enter: bool = false
@onready var camera = $"../camera"
func _ready():
randomize()
_choose_random_direction()
func _physics_process(delta: float) -> void:
velocity = dir * speed
if Input.is_action_just_pressed("accept"):
camera.unzoomi(delta)
move_and_slide()
func _choose_random_direction():
var directions = [
Vector2(-1, 0), Vector2(1, 0), # Left, Right
Vector2(0, -1), Vector2(0, 1), # Up, Down
Vector2(-1, -1), Vector2(1, -1), # Top-left, Top-right
Vector2(-1, 1), Vector2(1, 1), # Bottom-left, Bottom-right
Vector2(0, 0)
]
dir = directions[randi() % directions.size()]
await get_tree().create_timer(randf_range(1, 3)).timeout
_choose_random_direction()
O if dentro da função _physics_process deveria ser um zoom da câmera com uma transição suave, mas quando eu chamo a função do zoom, o zoom termina em uma instância em vez dos 2 segundos que eu programei.
este é o código da câmera:
var zooming: bool = false
@onready var player = $"../player"
func _process(delta: float) -> void:
position = player.position
func zoomi(delta):
var end: float = 3
zooming = true
if zooming == true:
zoom.x = lerp(zoom.x, end, 0.4 * delta)
zoom.y = lerp(zoom.y, end, 0.4 * delta)
if zoom.x > end * .8:
zooming = false
func unzoomi(delta):
var end: float = 3
zooming = true
if zooming == true:
zoom.x = lerp(zoom.x, end, 0.4 * delta)
zoom.y = lerp(zoom.y, end, 0.4 * delta)
if zoom.x > end * .8:
zooming = false
obrigado.