001【2D Rougelike】随机地图的生成
2017-06-17 23:31
316 查看
简单思路:
指定范围内,在随机位置生成随机数量的随机图块。
①指定范围&随机位置:获取需要图块生成的位置坐标,存放在一个二维List中;
②随机图块:各类图块(Prefab)按类型存放在不同数组中,以便随机调用;
③随机数量:定义图块的最小值和最大值,在此区间内取随机数。
④各个图块在生成时不会互相叠加,即不会生成在同一位置。
实现方法:
指定范围内,在随机位置生成随机数量的随机图块。
①指定范围&随机位置:获取需要图块生成的位置坐标,存放在一个二维List中;
②随机图块:各类图块(Prefab)按类型存放在不同数组中,以便随机调用;
③随机数量:定义图块的最小值和最大值,在此区间内取随机数。
④各个图块在生成时不会互相叠加,即不会生成在同一位置。
实现方法:
//① 指定范围&随机位置 private int col=10; private int rows=10; //首先定义地图总行数和列数 private List<Vector2> positionList=new List<Vector2>(); //用于存放坐标 for(x=2;x<col-2;x++) { //遍历需要生成图块的所有坐标,存放到List中。 for(y=2;y<row-2;y++){ positionList.Add(new Vector2(x,y)); } } //取得随机位置的方法 private Vector2 randomPosition();{ int positionIndex=Random.Range(0,positionList.Length);//在List中随机取得 Vector2 pos=Vector2 positionList[positionIndex]; positionList.RemoveAt(positionIndex); //取过的位置从List中移除 retrun pos; } //取得随机图块同理。 ②生成随机图块的通用方法 private void InstantiateItems(int count,GameObject[] prefabs){ Vector2 pos=randomPosition();//调用方法,取随机位置; GameObject prefab=randomPrefab(prefabs);//调用方法,取随机图块,并且参数为需要的prefab GameObject go=GameObject.Instantiate(prefab,pos,Quaternion.identity)as GameObject; }
相关文章推荐
- Unity2D - 6. 生成随机地图 (2) - 脚本控制Tilemap (1) 自动切换不同的sprite
- Unity2D - 6. 生成随机地图 (2) - 脚本控制Tilemap (2) 加载已有房间地图
- Gleed2D:轻量级2D关卡编辑器 以及在Cocos2d-x使用Gleed2D生成的地图
- untiy 2D 曲面地图动态生成
- 技术贴:如何简单地做游戏随机生成地图
- 关于“搭桥”游戏生成随机地图的设计思路
- Unity 生成随机房间、洞穴(2D、3D地图)总结
- Unity在地图范围内任意位置随机生成3D模型
- 用Unity实现《随机生成 Tile Based 地图之——洞穴》中的算法
- SpriteKit游戏Delve随机生成地牢地图一个Bug的修复
- 程序化随机多边形地图生成
- Unity2D - 6. 生成随机游戏地图 (1)
- 地图随机生成lua版本
- 星际SC地图制作中生成随机位置,也包括所有需要随机的效果
- SpriteKit游戏Delve随机生成地牢地图一个Bug的修复
- SpriteKit游戏Delve随机生成地牢地图一个Bug的修复
- ZZH:魔兽世界之001:如何枚举得到WOW的各个地图和如何生成WOW Minimmap
- VC++的随机性问题(连连看随机地图的生成)
- LunarLander 随机生成地面地图!
- 利用深度优先搜索做的随机生成地图的迷宫小游戏