首页 - 神途手游 > 如何制作一款类似我的世界pc版沙盒游戏?

如何制作一款类似我的世界pc版沙盒游戏?

发布于:2024-04-14 作者:admin 阅读:54

最近,用四周的双休时间,写了个类的游戏。

所以,在这里分享一下开发经验。类MC游戏,最重要的就是地形生成与优化,和装备合成。

关于地形生成

首先定义不同Block的属性,比如各个方向的材质。 (在Unity中 用 就就行了)

然后,给不同Block一个ID编号

然后,就能开始下一步,渲染世界了。首先,准备一个三维数组 ,然后给它填满

数组的值就是Block ID

  var data = new int[mapData.max_height, mapData.max_width, mapData.max_length];
                for (var heightIndex = 0; heightIndex < mapData.max_height; heightIndex++)
                {
                    for (var i = 0; i < mapData.max_width; i++)
                    {
                        for (var j = 0; j < mapData.max_length; j++)
                        {
                            var blockID = 0;
                            if (heightIndex == 0)
                            {
                                blockID = 3;
                            }
                            else if (heightIndex < 15)
                            {
                                blockID = 1;
                            }
                            data[heightIndex, i, j] = blockID;
                        }
                    }
                }
                //生成山地
                for (var heightIndex = 15; heightIndex < mapData.max_height; heightIndex++)
                {
                    for (var i = 0; i < mapData.max_width; i++)
                    {
                        for (var j = 0; j < mapData.max_length; j++)
                        {
                            Random.InitState(mapData.seed);
                            var seed = Random.value * 100;
                            var scale = 5.5f;
                            var maxHeight = Mathf.PerlinNoise(i * scale / mapData.max_width + seed, j * scale / mapData.max_length + seed) * 8 + 15;
                            if (heightIndex < maxHeight)
                            {
                                data[heightIndex, i, j] = 1;
                            }
                        }
                    }
                }

我将三维数组的数据,储存在了中(需要将三维数组转换为一维数组才可以保存),方便调试。

然后地形的生成上,只需要对三维数组做遍历,判断每个Block的前后左右是否还有Block,没有Block就把这一个面渲染出来,类似于下面的方法,徒手写面片

//渲染顶部面片
runtimeData.vertices.Add(pivot + new Vector3(0, 1, 1) + mapData.startPos);
runtimeData.vertices.Add(pivot + new Vector3(1, 1, 1) + mapData.startPos);
runtimeData.vertices.Add(pivot + new Vector3(0, 1, 0) + mapData.startPos);
runtimeData.vertices.Add(pivot + new Vector3(1, 1, 0) + mapData.startPos);
runtimeData.triangles.Add(verIndex);
runtimeData.triangles.Add(verIndex + 1);
runtimeData.triangles.Add(verIndex + 2);
runtimeData.triangles.Add(verIndex + 2);
runtimeData.triangles.Add(verIndex + 1);
runtimeData.triangles.Add(verIndex + 3);
runtimeData.uvs.Add(new Vector2(0, 1));
runtimeData.uvs.Add(new Vector2(1, 1));
runtimeData.uvs.Add(new Vector2(0, 0));
runtimeData.uvs.Add(new Vector2(1, 0));

然后,就大功告成了。不过,各个面片对应的坐标,需要记录一下。否则,你就无法删除渲染了。

关于碰撞,寻找将最外层的Block,然后各自加个就行了。也需要记录下对应的坐标。

接着,就是合成系统。首先,写一个的。保存不同的装备信息,接着写合成信息。

    [CreateAssetMenu(fileName = "RecipeData", menuName = "RecipeData")]
    public class RecipeData : ScriptableObject
    {
        public Inventory[] Recipe = new Inventory[9];
        public Inventory CraftedInventory;
        public int CraftedCount = 1;
    }

在游戏内,只要比对用户装备放的位置,是否与合成信息相同就行了。

这样,自制的MC就大功告成了。

具体的算法,还需各位看官自己去琢磨,本文已给出了大致的开发思路。

最后,给各位看下目前的成品。 编辑于 2019/6/02

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章

  • 9月9日软件、游戏限免资讯

    9月9日软件、游戏限免资讯

    限免具有时效性,由于公众号机制,有可能你看到的时候已经恢复原价了,更多限免信息可以登录我们网站进行查看 https://free.apprcn.com...

    2024-09-20

  • 【闪光训练馆通关攻略】(已完结)

    【闪光训练馆通关攻略】(已完结)

    注:五个副本全部通关之后,护符商店就会出现,之前所有的护符1:1对换成兑换币,所以每天请大家还是尽量多打一点PVP...

    2024-09-20

  • 逆战活动:挑战时长送武器大礼包

    逆战活动:挑战时长送武器大礼包

    逆战活动:挑战时长送武器大礼包17173_最新最全逆战资讯尽在17173逆战专区...

    2024-09-20

  • 9月4日软件、游戏限免资讯

    9月4日软件、游戏限免资讯

    限免具有时效性,由于公众号机制,有可能你看到的时候已经恢复原价了,更多限免信息可以登录我们网站进行查看 https://free.apprcn.com...

    2024-09-20

  • 中国著名的自由传道人

    中国著名的自由传道人

    1930年代和1940年代中国著名的自由传道人;奋兴布道家。在1950年代初三自掀起的控诉运动中,他是最早被控诉的教会领袖之一。...

    2024-09-20

  • 植物大战僵尸e版支线 PC版

    植物大战僵尸e版支线 PC版

    植物大战僵尸e版支线下载,《植物大战僵尸e版支线》,这是一款玩家魔改版的植物大战僵尸,相比其他魔改版,这款游戏中的植物和僵尸同时得到了加强,玩起来非常带感...

    2024-09-20