问题描述
如何在 3 x 3 网格中生成块,以便场景中始终有 9 个网格实例?目前,每次玩家移动到新区域/区块时,我只会生成 1 个区块。
为了让你们更容易,我把它放到了一个 github repo 中,以便你们可以下载并试用它! https://github.com/Dragon20C/GODOT---Flat-Terrain-Generation
相关代码:
var chunk_x = floor(player.translation.x / chunk.size)
var chunk_z = floor(player.translation.z / chunk.size)
var new_chunk_pos = Vector2(chunk_x,chunk_z)
if new_chunk_pos != chunk_pos:
if !new_chunk_pos in prevIoUs_chunks:
chunk_pos = new_chunk_pos
var instance = chunk_scene.instance()
add_child(instance)
instance.chunk_position_set(Vector3(chunk_pos.x * chunk.size,chunk_pos.y * chunk.size))
prevIoUs_chunks.append(chunk_pos)
解决方法
将此代码提取到一个新函数中:
if !new_chunk_pos in previous_chunks:
chunk_pos = new_chunk_pos
var instance = chunk_scene.instance()
add_child(instance)
instance.chunk_position_set(Vector3(chunk_pos.x * chunk.size,chunk_pos.y * chunk.size))
previous_chunks.append(chunk_pos)
然后调用它传递 new_chunk_pos
和它周围块的位置。即 x 在 new_chunk_pos.x - 1
到 new_chunk_pos.x + 1
范围内,y 在 new_chunk_pos.y - 1
到 new_chunk_pos.y + 1
范围内的位置。