

创建Roguelike随机地下城(一)
M STUDIO
Unity 价值专家|零基础入门砸门人|毕设拯救者
阅读 9329
2020年2月2日
徒手打造Roguelike风格游戏的随机地下城(一):建立随机房间
先上效果图,你就知道是不是你想要收藏的宝藏文章啦~😜
利用《夜勤人》游戏相关素材模拟创建随机地下城房间
是不是应该点赞收藏一气呵成~哈哈哈
不废话了,这个系列分几个部分完成,所以要继续关注和支持我哦~下雪大家
第一个部分:创建基本房间并生成随机算法
思路:建立一个空的 GameObject 用来做创建房间的点,设置坐标(0,0,0)。每创建1个房间之后,随机在上、下、右判断是否有房间,若没有就创建一个新的房间;若已经有房间,则再次随机切换周围四个方向位置。代码如下:
首先利用枚举来获得四个方向:
public enum Direction { up, down, left, right };
public Direction direction;
切换位置要判断是否有房间,所以基础房间要挂在 BoxCollider2D 并设置为 trigger。然后循环判断检测有房间则继续切换位置:
public void ChangePointPos()
{
do
{
direction = (Direction)Random.Range(0, 4);
switch (direction)
{
case Direction.up:
generatorPoint.position += new Vector3(0, yOffset, 0);
break;
case Direction.down:
generatorPoint.position += new Vector3(0, -yOffset, 0);
break;
case Direction.left:
generatorPoint.position += new Vector3(-xOffset, 0, 0);
break;
case Direction.right:
generatorPoint.position += new Vector3(xOffset, 0, 0);
break;
}
} while (Physics2D.OverlapCircle(generatorPoint.position, 0.2f, roomLayer));
}
其中 xOffse 和 yOffset 是可以更改的 float 型变量,用来修改两个房间的位移位置的。
有了切换坐标的方法,我创建一个房间并存储为 Prefab 预制体,在 Start( ) 方法里循环生成指定数量(roomNumber)的房间并添加到一个列表 rooms 里:
void Start()
{
for (int i = 0; i < roomNumber; i++)
{
rooms.Add(Instantiate(roomPrefab, generatorPoint.position, Quaternion.identity));
//改变point位置
ChangePointPos();
}
rooms[0].GetComponent().color = startColor;//改变第1个房间的颜色
}
至此可以创建随机数量的房间了!
素材及视频讲解记得来看我的B站哦~记得帮我转发哦~谢谢大家!
视频地址:
https://www.bilibili.com/video/av85927856 https://www.bilibili.com/video/av85927856
简单房间素材:
如何找到最后的房间设置为结束房间的方法,请关注期待下一期哦~
发布于技术交流
38条评论

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI