01.使用新的图层
在这之前,所有方块都是直接添加到了默认图层上,但是现在,我们要创建一个新的图层,用于放置方块,命名为:Block。
打开导演类,为主屏幕添加新的图层,并且删除之前在默认图层上添加的方块:
void Start()
{
_screenMain = Screen-Main.GetComponent<ScreenMain>();
_screenMain.Init();
// 获取默认图层
Layer defaultLayer = _screenMain.GetLayer("DefaultLayer");
if (defaultLayer != null)
{
}
// 添加方块图层
_screenMain.AddLayer("Block");
// 获取方块图层
Layer blockLayer = _screenMain.GetLayer("Block");
if (blockLayer != null)
{
// 添加一个方块
EBlockType blockType = BlockCrea-tor.GetInstance().RandomBlockType();
blockLayer.ViewData = BlockCrea-tor.GetInstance().CreateBlock(blockType);
}
// 刷新屏幕
_screenMain.RefreshScreen();
// 启动定时器,执行游戏核心逻辑
InvokeRepeating("GameCore", 0, 1);
}
现在,方块是显示在最底端的,但是新方块生成是应该是在最上面的,所以需要修改图层的坐标:
blockLayer.Point = new MyPoint(20, 4);
02.添加下落方法
下落方块非常简单,因为方块是放在图层上的,所以只需修改图层的坐标即可。
该方法中需要引用方块图层,在Start()方法中,也用到了该图层,既然大家都用到了,那将引用保存在成员变量中即可。我们需要添加一个成员:
Layer _blockLayer; // 方块图层
然后修改Start()方法中的代码,将局部变量替换为成员变量即可,代码请参考附件。
下面是下落方块的代码:
// 下落方块
void MoveDownBlock()
{
MyPoint newPoint = _blockLayer.Point;
newPoint._line -= 1;
_blockLayer.Point = newPoint;
// 刷新
_screenMain.RefreshScreen();
}
最后在GameCore()方法中调用下落方块即可。
回到Unity运行,每隔1秒,方块会下落一格。但你会发现,最后下落到屏幕下面看不见了,所以下一节,我们来处理下落的碰撞。
代码链接:https://pan.baidu.com/s/1ubcRQJ3b1BGqyznRyjRQDA
提取码:ggpj
网友评论