【问题标题】:How would I randomly generate a 3d world in Godot?我将如何在 Godot 中随机生成一个 3d 世界?
【发布时间】:2021-03-04 10:21:53
【问题描述】:

我正在尝试创建一个基于网格的随机生成世界。它的工作方式是从一系列可能的世界区块中随机选择,然后在 3x3 网格中生成其中的 9 个。但是,要做到这一点,我需要知道如何将节点添加到数组中,以及在将子节点添加到场景树之前或之后移动它。我知道这一切背后的理论,我只需要 Godot 使用的命令来实现这一点。这些是什么?另外,如果您需要任何其他信息来回答,请告诉我。

【问题讨论】:

  • 你尝试过编程吗?发布您已经拥有的代码或尝试编写脚本,然后询问您是否还有任何问题。

标签: random godot procedural-generation gdscript


【解决方案1】:

但是,要做到这一点,我需要知道如何将节点添加到数组中

看这段代码:

var _objToSpawn : PackedScene = preload('res://path_to_object.tscn')
var _nodeArr : Array = []

func _spawnObjectAndAddToArr() -> void:
    var newObj : ObjectClass = _objToSpawn.instance()
    add_child(newObj)
    
    _nodeArr.append(newObj)

该代码从文件加载场景,创建一个新数组,然后定义一个生成加载文件的函数,将其添加为当前节点的子节点,并将其添加到预先定义的数组中。

以及在将子节点添加到场景树之前或之后移动它

在 3d 中,要使对象具有位置,它最终必须扩展 Spatial。然后你更改对象的translationtransform.origin

var _objToSpawn : PackedScene = preload('res://path_to_object.tscn')
var _nodeArr : Array = []

func _spawnObjectAndAddToArr() -> void:
    var newObj : ObjectClass = _objToSpawn.instance()
    add_child(newObj)

    newObj.translation = translation
    
    _nodeArr.append(newObj)

编辑:另外,如果您想将其添加到场景树中,请使用 add_child,而不是 get_tree().current_scene.add_child

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多