我是godot和编程的新手。我在实现 Timer 节点时遇到问题。我正在编写一个简单的脚本来实现类似 zelda 的相机系统。相机系统按预期工作,但是我想在相机 lerp 期间冻结角色(最终是 npc)。我打算为此尝试使用计时器,而那是我遇到障碍的时候!
extends Camera2D
var width: = 1024
var height: = 640
var x_offset = width/2
var y_offset = height/2
var new_position = Vector2()
var timer
func _ready() -> void:
global_position = Vector2(x_offset,y_offset)
new_position = global_position
timer = Timer.new()
timer.connect("timeout", self, "_grid_transition_pause")
timer.one_shot = true
timer.wait_time = 1
add_child(timer)
func _grid_transition_pause() -> void:
print("success")
func _process(delta: float) -> void:
var player_position = get_node("../Player").global_position
var x = floor(player_position.x/width) * width + x_offset
var y = floor(player_position.y/height) * height + y_offset
new_position = Vector2(x,y)
if new_position != global_position:
global_position = lerp(global_position, new_position, 0.07)
new_position = global_position
print("position changed")
timer.start()
if Input.is_action_just_released("test_key"):
print("test key")
timer.start()
我添加了一个输入键,看看我是否可以这样启动计时器。我可以。但是有一件奇怪的事情:只有当相机处于原始位置时,才能使用输入键启动计时器。一旦相机完全移动,输入键就不再起作用,即使回到原来的位置。
我是否从根本上误解了如何使用计时器节点?感谢您的时间和帮助一个人!