extends CanvasLayer @export var show_cat := false @export var show_cat_duration := 3.0 @onready var cat := $TextureCat as TextureRect func _ready(): offset = Vector2.ZERO visible = true await get_parent().ready # 盒子猫镜头左右各增加边框宽度 var camera = SceneManager.get_camera_marker() camera.limit_left -= 100 camera.limit_right += 100 if show_cat: create_tween().tween_property(cat, "modulate:a", 0.0, show_cat_duration) else: cat.visible = false var down_pressing = false: set(val): # print("down_pressing: ", val) down_pressing = val _try_toggle_crawl() var crawling = false: set(val): crawling = val # print("crawling: ", val) if val != down_pressing: # 执行结束后,如果发现不一致,尝试切换 # print("crawling mismatch, swtich to: ", down_pressing) # 需要重置 tween crawling_toggle_tween = null _try_toggle_crawl() var crawling_toggle_tween: Tween func _try_toggle_crawl(): if crawling_toggle_tween and crawling_toggle_tween.is_valid(): # print("tweening, skip.") return crawling_toggle_tween = create_tween() var crawl = down_pressing if crawl: SceneManager.freeze_player(0, 7) else: SceneManager.freeze_player(0, 8, true) crawling_toggle_tween.tween_interval(0.4) if not crawl: crawling_toggle_tween.tween_callback(SceneManager.release_player) crawling_toggle_tween.tween_callback(func(): crawling = crawl) func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("down") and not down_pressing: down_pressing = true elif event.is_action_released("down") and down_pressing: down_pressing = false