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

Node3D全局位置返回nil问题:如何确保正确获取全局坐标?

解决Node3D全局位置返回nil的问题

你的代码存在两个核心问题,直接导致了返回值异常:

  • 函数缺少return语句:get_end()和get_start()仅写了获取位置的表达式,但未用return返回结果。GDScript中,无显式return的函数默认返回nil,这就是你遇到返回nil的根本原因。
  • is_free_to_land()函数同样缺失return,实际会默认返回nil,而非你预期的true。

修正后的代码如下:

extends Node3D
class_name Runway

@onready var end_node: Node3D = $End

var moving: bool = false

func set_moving(new_value: bool):
    moving = new_value

func get_end() -> Vector3:
    return end_node.global_transform.origin  # 添加return返回结果

func get_start() -> Vector3:
    return get_global_transform().origin  # 添加return返回结果

func is_free_to_land():
    return true  # 添加return返回预期值

额外注意:@onready修饰的end_node会在节点_ready()阶段完成赋值,如果在节点ready前调用get_end(),end_node会处于nil状态,调用其属性也会引发异常。确保调用这些位置获取函数时,节点已完成初始化流程(比如在_ready()之后调用,或场景实例化完成后调用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:42:07