(蓝图)虚幻4重制俄罗斯方块(四)移动方块

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

(一)思路

首先大家要搞清楚方块在地图中显示的原理,是根据定位点,把B数组中的元素,映射到地图A数组里面去

而移动则是改变定位点的位置,实际上没有任何东西在移动,仅仅是0和1的变化

整个逻辑就是,遍历A数组,由于定位点坐标已知,那么可以计算出B数组映射在A的中范围,同时遍历B数组,如果B中为0就设置A中相同位置也为0,反之则为1即可

如过设定位点坐标为(a,b),那么A中的范围可以表示为a<=X<=a+3,b-3<=Y<=b

(二)显示方块

LocPoint

如果上面的思路清晰了,很显然首先要一个变量存储定位点坐标,打开之前的MyPlayerController蓝图,添加一个整型数组变量,并添加两个元素并设置默认值,0号元素表示x设置成4,1号元素表示y设置成3

 下一步定义是要根据条件,设置A数组,最后达到显示方块的功能

需要满足两个条件后再设置A的值为1

IsLoc

第一个条件要缩小范围到以定位点确定的16个格子中,点上纯虚函数,XY表示A的坐标

 第二个条件要满足,A中的格子为0,B中对应格子元素为1

IsAandBbothEqual

最后创建一个函数 

SetAbyCondition

这里的setAbyIndex的输入值和前面不一样是因为我增加了一个局部变量,更方便一点

好了,最后到事件图表中,把刚才的函数拖到ShowMap之前,设置好rowname的值为1,就可以看效果了

(三)移动方块

控制的方法有很多,这里就用最快的ASD来实现进行左下右移动吧

先弄出这三个键(在搜索列表的很下面),再设置LocPoint的X或Y,设置A,最后显示地图

目前得到的结果大概是这个样子,方块是移动了,新的方块也显示了,但原来的方块并没有隐藏

 解决办法很简单,我们只需要在设置A之前,把整个地图A中的1先删掉,暂时就可以了

(四)刷新地图

ReFlashMap

新建一个函数,调用遍历A宏进行判断后设置A的值为0即可

 

 很显然的是,前面创建的宏和一些函数,为我们节省了相当多的空间和时间,不过现在你会发现你的方块可以移动到围墙之外去,这是不允许的,我们会在后面解决这个问题

猜你喜欢

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