我试图使游戏中的世界动态,当我越过边缘时,块未添加到正确的位置

checkrenderdistance():

        void CheckRenderDistance()
        {
            if (player.Position.X > CurrentWorldSize * Chunk.Size)
            {
                Vector3i chpos = ChunkInWorld((int)player.Position.X, (int)player.Position.Y, (int)player.Position.Z) * Chunk.Size;
                Vector3i pos = new Vector3i((int)player.Position.X * (CurrentWorldSize * Chunk.Size), 0, (int)player.Position.Y * (CurrentWorldSize * Chunk.Size));

                GenerateChunkRegion(pos * chpos);

                Debug.Log("f");
            }
        }

generatechunkregion():

        public void GenerateChunkRegion(Vector3i pos = null)
    {
        if(pos == null)
        {
            pos = new Vector3i(0, 0, 0);
        }
        for(int x = 0;x<Chunk.Size * renderdistance; x++)
        {

            for(int y = 0 ;y < 256; y++)
            {
                for(int z = 0;z<Chunk.Size * renderdistance; z++)
                {
                    SetVoxel(x + pos.X, y + pos.Y, z + pos.Z, GetVoxelP(x + (pos.X * Chunk.Size),y + (pos.Y * Chunk.Size),z + (pos.Z * Chunk.Size)));
                }
            }
        }
        CurrentWorldSize += renderdistance;
        Debug.Log("Current World Size:" + CurrentWorldSize + " Current Voxel Count:" + (CurrentWorldSize * Chunk.ChunkVoxelCount));
    }

chunkinworld():

        public static Vector3i ChunkInWorld(int x, int y, int z) => new Vector3i
    (
        x < 0 ? (x + 1) / Chunk.Size - 1 : x / Chunk.Size,
        y < 0 ? (y + 1) / Chunk.Size - 1 : y / Chunk.Size,
        z < 1 ? (z + 1) / Chunk.Size - 1 : z / Chunk.Size
    );

  ask by vincent castro translate from so

本文未有回复,本站智能推荐:

1回复

获取存在于不同块中的邻居块

我的问题非常类似于此,但我无法解决这个问题,因为数学需要有所不同: https : //gamedev.stackexchange.com/questions/65800/when-storing-voxels-in-块状怎么办,我访问了他们,在这世界级 我想删除一些块的面孔。 如果它在
1回复

Unity3D - 如何向网格添加纹理

我正在制作一个立方体素游戏。 我已经完成了块、世界、块和网格的生成,但有一个问题 - 我无法制作纹理。 我需要的一切只是在 3D 网格的一侧添加纹理(每个纹理都不同!)。 我见过一些实现,但很难阅读别人的代码(我尝试使用它们,但没有奏效)。 我试图自己做这件事,但没有结果。 有人可以解释一下如何
1回复

在XNA中创建无纹理彩色立方体的正确方法?

我目前正在尝试将此代码转换为C#XNA,但是我遇到了转换CreateCube方法的问题 - 在XNA中创建顶点列表的资源似乎已过时,无效,或者只是不起作用。 谁能给我一些帮助? 我只是想通过手动设置每个面的顶点来创建彩色的无纹理立方体,然后将(那些)立方体或立方体的一部分添加到Verte
1回复

当1个体素不等于1个单位时,从世界转换为体素

我正在制作一个unity3d游戏,该游戏需要使用体素引擎来构建结构,除了我计划包括比简单的多维数据集更多的模型,而且其中一些很小。 因此,我需要体素每个小于1个单位(每个单位3个)。 问题是由于大小不相等,我无法在世界空间和体素坐标之间进行转换(如果它们的大小相同,那将不是问题)。 到目前
1回复

将块添加到块-Java OpenGL

现在,在我的体素引擎中,我正在尝试将块添加到块中,并且这已经完成了一半。 它在Java和OpenGL中。 无论如何,当我放置积木时,我正在这样做: 在那之后,在我的块类中,我有了这个方法: (我通过调用列表进行渲染)无论如何,它将块添加到块中,但是当我放置新块时,它将删除旧块
1回复

使用单个VBO创建体素块-如何转换每个块的坐标并将其添加到VBO块?

我正在尝试制作类似于minecraft的opengl体素引擎。 我已经创建了一个块类,并且我想将整个块的所有顶点放入单个VBO中。 以前,我只是将每个块放入vbo中,然后调用以渲染每个块。 当我将所有顶点放入一个vbo中时,如何转换块中每个块的坐标,我有些困惑。 这是我目前所
1回复

Voxel Chunk没有呈现正确的块?

我目前正在尝试学习3D,并试图在3d数组和所有有趣的东西,而在它时有一些乐趣。 我似乎无法理解为什么我的代码没有渲染正确的立方体...我运行3D数组并分配随机状态(1画,2不画)我无法弄清楚为什么当我通过状态它似乎只画了所有的立方体或没有。 任何帮助表示赞赏,请原谅糟糕的代码。 编
1回复

块加载和排序

我正在研究我的世界的克隆,我有2个问题与块加载。 首先:确定要加载的块。 我发现一种丑陋的方法,但是对我来说工作很快 定义3d数组(array)(大小:MAX_CHUNKS_X,MAX_CHUNKS_Y,MAX_CHUNKS_Z) 用FALSE填充3D数组