(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第1张图片

思路

先想一下,什么时候会发生碰撞?与什么东西发生碰撞?

移动方块值为1,围墙值3,固定方块值为2,

那么我们需要判定方块所在的16个格子是否会发生碰撞

16个格子只检测移动方块(值为1)的下方是否为固定方块(值为2),如果是就固定,如果不为2就继续移动。

检测算法有点类似于数据结构中的串的BF匹配算法,双重循环简单粗暴

(一)检测碰撞

新建一个IsCanMove函数,3个布尔类型返回值默认值为1,最后返回是否会发生碰撞

遍历地图矩阵,条件IsLoc缩小范围到16个元素,x去掉一头一尾,Y去掉末尾,目的去掉围墙部分

 

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第2张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第3张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第4张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第5张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第6张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第7张图片

 

在三个移动操作中使用分支语句

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第8张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第9张图片

 

在设置向下移动之前需要对前面的FixBlocks函数进行一下拆分

将条件放入新的函数Tobottom中执行

同时替换Move函数中的FixBlocks函数为Tobottom 

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第10张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第11张图片

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第12张图片

最后我们在向下移动函数中,分支为假执行固定方块并重置方块 

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第13张图片

不出意外的话,现在的方块已经能够在地图中下落,自由移动和堆叠了,马上就要竣工了

(蓝图)虚幻4重制俄罗斯方块(六)-碰撞检测_第14张图片

 

你可能感兴趣的:(虚幻4蓝图重制俄罗斯方块)