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

Godot开发太空射击游戏出现'invalid get index 'position'错误如何解决

报错原因
  • 脚本中声明的player变量从未被赋值,始终为Nil空值,当你调用_get_dir(player)时,传入的target参数为空,访问target.position自然触发了该报错。
  • 额外隐藏问题:代码中使用的offset变量也未定义,后续运行会触发新的报错。
修复方案

在_ready()函数中先通过场景树路径获取Player节点赋值给player变量,同时补充定义offset变量即可,修复后的完整代码如下:

extends StaticBody2D

var dir = Vector2()
var player
var bullet = preload("res://scebes/EnemyBullet.tscn")
# 补充定义子弹生成位置的偏移量,数值可以根据你的需求调整
var offset = 20.0

func _ready():
    # 通过场景树路径获取Player节点赋值
    player = get_parent().get_node("Player")
    _get_dir(player)

func _get_dir(target):
    dir = (target.position - position).normalized()


func _on_Timer_timeout():
    _get_dir(player)
    var b = bullet.instance()
    get_parent().add_child(b)
    b.position = position + dir * offset
    b.dir = dir
验证

修改完成后运行项目,敌人就可以正常获取玩家的位置信息,朝玩家方向发射子弹了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:08