You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot波次射击游戏GDScript提示意外缩进错误无法解决

问题根因

你提供的代码存在两处直接导致缩进报错的问题:

  • if hp <= 0: 开头的逻辑块直接写在了脚本顶级作用域,GDScript 中顶级作用域仅允许放置变量声明、资源预加载、继承声明这类定义类内容,不允许直接写可执行逻辑
  • 这段逻辑本身额外多了一层不必要的前置缩进

修复方案

生命值归零销毁逻辑属于触发式逻辑,你可以将它放到帧更新函数_process中每帧检测,也可以封装成独立函数在角色受击时主动调用,以下是可正常运行的修复后代码:

extends Sprite

var speed = 75
var velocity = Vector2()
var stun = false
var hp = 3
var blood = preload("res://blood.tscn")

func _process(delta):
    # 生命值归零逻辑移到帧函数内部,去掉多余缩进
    if hp <= 0:
        if Glob.camera != null:
            Glob.camera.screen_shake(120, 0.3)
        
        Glob.points += 1
        if Glob.node_creation_parent != null:
            var blood_part = Glob.instance_node(blood, global_position, Glob.node_creation_parent)
            blood_part.rotation = velocity.angle()
        queue_free()
        print(Glob.points)

func basic_move_towrds(delta):
    if Glob.player != null and stun == false:
        velocity = global_position.direction_to(Glob.player.global_position)
    elif stun:
        velocity = lerp(velocity, Vector2(0, 0), 0.3)
    global_position += velocity * speed * delta

如果不需要每帧检测生命值,也可以把这段逻辑封装为on_hp_change()之类的自定义函数,仅在角色受到伤害修改hp值之后调用,性能消耗更低。

内容的提问来源于stack exchange,提问作者Noah Anaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 12:33:03