0

如何在 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,0,chunk_pos.y * chunk.size))
            previous_chunks.append(chunk_pos)
4

1 回答 1

0

将此代码提取到一个新函数中:

        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,0,chunk_pos.y * chunk.size))
            previous_chunks.append(chunk_pos)

然后称它为传递new_chunk_pos和它周围的块的位置。即 x 在 to 范围内new_chunk_pos.x - 1new_chunk_pos.x + 1y 在 to 范围内new_chunk_pos.y - 1的位置new_chunk_pos.y + 1

于 2021-03-24T20:57:08.887 回答