UNITY 开发日记/教程 俄罗斯方块 (四) 方块下落和落地判定

这篇教程介绍了在Unity中开发俄罗斯方块时如何实现方块的下落功能及落地判定。通过设置fallspeed控制下落速度,利用Update函数配合timeCount进行计时,当时间累积到一定值时方块下降一格。同时,使用squareMap记录落地方块位置,实现游戏流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上文.

我们拿到要操作的方块之后,事情就变得简单起来,只要用代码来控制现有的UI即可.

首先来实现方块下落.

我们首先需要定义一些字段来实现下落的功能.

fallspeed来控制方块下落速度,将来可以用来控制游戏的难易度.

runFlag用来表示游戏是否正在进行,可以用来做暂停功能,游戏结束等等.在游戏开始时将这个布尔量为真,暂停和gameover时为假.

fallInterval为下落时间间隔.

timeCount用来计游戏流逝时间,timeCount累积达到fallInterval时,使方块下落一格.

squareMap用来保存已经落地之后的正方形的位置.


    [Range(1,10)]
    public float fallSpeed;
    RectTransform myRectTransform { get { return GetComponent<RectTransform>(); } }
    dmBlock nowControlBlock;
    bool runFlag;
    float fallInterval { get { return 1 / fallSpeed; } }
    float timeCount;
    Vector2 nowBlockPos;
    Dictionary<Vector2, GameObject> squareMap = new Dictionary<Vector2, GameObject>();



重构StartGame

    public void StartGame()
    {
        if (nowControlBlock != null)
        {
            blockBuilder.DestroySquares(nowControlBlock);
        }
        if(squareMap != null)
        {
            foreach(Vector2 squareCoord in squareMap.Keys)
            {
                Destroy(squareMap[squareCoord]);
            }
        }
        squareMap.Clear();
        blockBuilder.BuildRandomBlock();
        NextBlock();
        timeCount = 0;
        runFlag = true;
    }
回收上次游戏的残留正方形,然后初始化一些控制用变量的初始值

写Update函数,Unity每一帧会自动调用Update,我们要把帧转换成固定时间,用timeCount变量的累计来做

void Update () {
    if (runFlag)
    {
        timeCount += Time.deltaTime;
        if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值