传奇私服发布网_新开传奇网站发布_最全优秀单职业传奇私服发布平台_www.sf999.Com
新开传奇私服网站专注于服务广大新开传奇首区和复古传奇私服玩家,我们承诺全年无休,每天为您提供最新的新开传奇网站和传奇sf999信息。...
2025-01-03
最近,用四周的双休时间,写了个类的游戏。
所以,在这里分享一下开发经验。类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
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。
相关文章
新开传奇私服网站专注于服务广大新开传奇首区和复古传奇私服玩家,我们承诺全年无休,每天为您提供最新的新开传奇网站和传奇sf999信息。...
2025-01-03
明确否认him存在,但是我们可以从一些蛛丝马迹中发现官方有说谎的可能性。就有细心的玩家,从这五个地方观察到了him存在,总共4个证据。...
2025-01-03
8条回答:【推荐答案】主公莫慌(手游)-新手奖励1.序列号:gsaq6617(官方)固定唯一,可重复激活无数新账号。2.奖励:3000绿钻,1000将魂,1紫将...
2025-01-03
网盘提取码: xawy帝国cms内核仿《新趣头条》娱乐游戏资讯网站源码,适合做电竞,娱乐,评测类的站点。利用模板改改可以轻松完成1个站点。不带安装教程...
2025-01-03
热评文章
2022年专属火龙之神途新版
1.80龙神合击传奇
1.76永恒小极品+5复古传奇
1.76双倍魔天大极品第三季单职业
1.76神梦传奇三职业
1.80聖统圣统合击三职业传奇