第十八节 实现下落方块

作者: 安静的程序员 | 来源:发表于2019-06-24 10:57 被阅读0次
    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

    相关文章

      网友评论

        本文标题:第十八节 实现下落方块

        本文链接:https://www.haomeiwen.com/subject/iddnqctx.html