第二十五节 实现加速下落
2019-06-25 本文已影响0人
安静的程序员
01.分析
下落方块之前已经实现了,加速移动在左移右移上也已经实现了,如果只是单纯的加速方块下落的话,直接套用左移右移的代码即可,但请考虑以下几个问题:
首先,系统本身是有个定时器在不断控制方块的下落,然后现在又要用键盘来控制下落,如果一直按着下落,那么每隔一秒钟,方块会突然加速,这种体验很不好,所以,在按下方向键的时候,我需要关闭系统的自动下落。
自动下落关闭后,如果不松开下方向键,那游戏就会一直在执行下落方块,即使方块已经到底端了,这样游戏进程就断了。最优的解决方案是:
当按下下方向键时,不是单纯的加速下落,应该是加速游戏进程,也就是加速GameCore()的执行。
02.实现
当按下下方向键后,首先是停止GameCore(),然后启动一个更快的定时器,执行GameCore()。松开后,再次停止GameCore(),然后启动正常速度的定时器,执行GameCore():
// 按键 - 下方向键
if (Input.GetKeyDown(KeyCode.DownArrow))
{
CancelInvoke("GameCore");
InvokeRepeating("GameCore", 0, 0.05f);
}
if (Input.GetKeyUp(KeyCode.DownArrow))
{
CancelInvoke("GameCore");
InvokeRepeating("GameCore", 0, 1);
}
在测试的时候,感觉左右移动太迟钝了,所以调整了下速度,将原来的0.3秒和1.0秒改成了:
InvokeRepeating("MoveLeftBlock", 0.2f, 0.05f);
InvokeRepeating("MoveRightBlock", 0.2f, 0.05f);
四个方向键就只剩下一个上方向键了,该方向键的功能是旋转方块。之所以放到最后讲,因为——好戏总是在后面。
代码链接:https://pan.baidu.com/s/1eDdelRjaOgqT2JbKTOK4vA
提取码:bdwq