我在戈多做一个采矿游戏。
我的问题是,翡翠脉处于0,0的位置,但我在产卵脚本中改变了它。我需要得到在种子中使用它的全局位置,这样我就可以得到一个1或0的值来得到一个石头或翡翠块。因为它是0,0,每个块加载如下所示:图像
var rand = round(abs(chunksettings.noise.get_noise_2d(self.global_position.x + (x * offset),self.global_position.y + (y * offset)))*3)后来我有矿脉要装成块状。这些矿脉在其内部形成块状。
这个场景在主场景中得到了体现。以下是主要场景的代码:
extends Node2D
#offset between chunks
var offset = 48
#preloading chunk settings
export var load_x = 20
export var load_y = 20
#all the veins to spawn
var stone_vein = preload("res://Scenes/veins/Stone vein.tscn")
var emerald_vein = preload("res://Scenes/veins/Emerald vein.tscn")
func _ready():
for x in load_x:
for y in load_y:
var emerald_vein_inst = emerald_vein.instance()
add_child(emerald_vein_inst)
emerald_vein_inst.position2d.global_position.x = x * offset
emerald_vein_inst.position2d.global_position.y = y * offset
emerald_vein_inst.global_position.x = x * offset
emerald_vein_inst.global_position.y = y * offset
func getrandomnumber():
pass以下是开采矿脉的代码:
extends Node2D
onready var selfnoise = OpenSimplexNoise.new()
onready var chunksettings = $"/root/ChunkSettings"
onready var position2d = $Position2D
var emerald_block = preload("res://Scenes/Blocks/Emerald block.tscn")
var stone_block = preload("res://Scenes/Blocks/Stone_Block.tscn")
var offset = 16
var rng = RandomNumberGenerator.new()
func _ready():
selfnoise.seed = chunksettings.noise.seed
selfnoise.octaves = chunksettings.noise.octaves
selfnoise.persistence = chunksettings.noise.persistence
selfnoise.lacunarity = chunksettings.noise.lacunarity
gen_vein()
func gen_vein():
for x in 3:
for y in 3:
var inst_stone = stone_block.instance()
var inst_emerald = emerald_block.instance()
var inst = inst_stone
var rand = round(abs(chunksettings.noise.get_noise_2d(self.global_position.x + (x * offset),self.global_position.y + (y * offset)))*3)
print(rand)
if rand == 1:
inst = inst_emerald
elif rand == 0:
inst = inst_stone
print(self.global_position)
add_child(inst)
inst.position.x = offset * x
inst.position.y = offset * y发布于 2021-10-30 18:23:09
我更改了代码的一部分并使其工作起来。当它生成节点时,它运行节点脚本,然后更改其位置。所以,我改变了它产生的顺序。
func _ready():
for x in load_x:
for y in load_y:
var emerald_vein_inst = emerald_vein.instance()
emerald_vein_inst.global_position.x = x * offset
emerald_vein_inst.global_position.y = y * offset
add_child(emerald_vein_inst)而不是:
func _ready():
for x in load_x:
for y in load_y:
var emerald_vein_inst = emerald_vein.instance()
add_child(emerald_vein_inst)
emerald_vein_inst.position2d.global_position.x = x * offset
emerald_vein_inst.position2d.global_position.y = y * offset
emerald_vein_inst.global_position.x = x * offset
emerald_vein_inst.global_position.y = y * offsetReddit上有人帮了我(详细信息)。
https://stackoverflow.com/questions/69780877
复制相似问题