(蓝图)虚幻4重制俄罗斯方块(五)Timer和底部固定

版权声明:原创作品,请不要直接复制粘贴发布 https://blog.csdn.net/qq_30919603/article/details/83314924

思路

让我们先整理一下在玩俄罗斯方块的时候,一块方块下落过程中会发生的事情

  1. 方块不断下落
  2. 玩家左右下移动方块
  3. 方块移动到固定方块上方停止移动
  4. 到达底部停止移动

 那么,第一步很好实现,设置一个计时器,一定时间间隔就执行一次下降操作即可,第二步在前面我们也初略实现了一下,那么就剩下让方块停止。下面我们先让方块不断下落,再让方块到达底部停止,最后再实现方块的堆叠

(一)整理

首先先把上一章的移动函数封装一下,移动过程放入Move函数中,移动输入放到新建的3个函数中

 

(二)方块自动下落

SetTimerbyEvent

在事件图表中搜索出settimerbyevent,设置下落间隔,looping打上勾,拉出红色引脚搜索cus创建一个自定义事件,自定义事件接上Movedown函数,接到BeginPlay中ShowMap函数后面,这样游戏开始的时候,方块就会不断下落了

Timer函数有两种,一种是事件,一种是函数,两种能用的方法都几乎一样,内置方法主要就是对时间的处理,这里不一一赘述,有需要的时候自己试一下就知道了

方块不出意外,直接消失在底部,下一步我们要让方块到底部时就把A中的1变成2,来固定方块

其实很简单,还是根据定位点的位置,如果在一次移动之后,定位点的Y等于了底部那一行的Y,就说明移动中的方块已经到达了底部,改变A即可

突然发现函数已经有点多了,于是先分一下类

(三)固定方块

新建一个FixBlocks函数用来检测是否到底部并固定方块,可以看到我用Loc的Y值和WidthMap减去2个1比较,为什么是减去两个1?因为WidthMap的值为24,减1得23是最后一排的位置,再减个1才是底部的位置

把它放到Move函数末尾

这个时候就能看到方块固定到底部了,但是为什么没有方块继续往下了呢?是因为向下移动方块的过程中Locpoint值一直在增加,超过23之后就没有任何作用了,我们只需要在固定方块之后,重置Loc的值即可,记住是在固定方块之后

(四)重置方块

新建一个函数ReSetLocAndB_Name,这个函数的作用就是,定位点重新设置为开始的位置,并设置方块的形状,目前只有一种方块,所以还不需要设置,后面我们会随机生成一种方块

放到FixBlocks函数当设置A的值结束后重置

 现在我们可以看到方块在不断的循环下落了,但是并没有实现堆叠,那是因为还没有检测碰撞

猜你喜欢

转载自blog.csdn.net/qq_30919603/article/details/83314924