UE4 二维地图的缩放与拖拽操作

UE4 二维地图的缩放与拖拽操作

纯蓝图实现

拖拽和缩放

基础搭建

新建一个MainUI,CanvasPanel_Parent存放地图和CanvasPanel_Child,注意MainUI锚点为左上角,否则无法正确获取大小与位置,Map为要缩放和拖拽的地图,CanvasPanel_Child存放小图标,Map和CanvasPanel_Child锚点为铺满全屏,否则缩放会有问题,Image和TextBlock为固定ui,用来对比操作是否正确,不重要。
在这里插入图片描述

新建ChildUI,用做小图标,大小为20*20(可随意),只需要两张图片即可在这里插入图片描述

添加小图标

position为图标位置的二维数组,ChildUISizeHalf为子UI的大小的一半,这里为10*10。Icon Overlap为后续图标重叠的方法,暂时不需要连。
在这里插入图片描述

地图缩放

首先设置大小,Magnify布尔值判断是放大还是缩小,放大则为1.1倍,缩小则为0.9倍。总的限制在1-5倍,width为原视口宽,这里值1920,height为原视口高,这里值为1080。
在这里插入图片描述
然后因为大小改变了,需要调整CanvasPanel_Parent的位置,用scale来存储缩放的值方便后续使用。位置和大小的获取与计算都是为了以鼠标为中心进行放大,并且确保缩小后ui不会露出边界之外。
在这里插入图片描述
每次缩放调整了CanvasPanel_Parent之后,小图标的位置也需要更新,ChildUISizeHalf为小图标的一半大小,这里为10*10。
在这里插入图片描述

地图拖拽

两个方法即可
在这里插入图片描述
在这里插入图片描述

实现部分

在关卡蓝图调用MainUI对应方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果展示

在这里插入图片描述

小图标的重合显示

简单的以区域划分的方式重合,所以不会很自然。
在MainUI里面新建一个存放ChildUI数组的结构体,以及以vector2d为key,结构体为value的变量。
在这里插入图片描述在这里插入图片描述
创建用来确定缩放后小图标重叠的层级依据和范围大小的变量
在这里插入图片描述

下面是Icon Overlap方法的逻辑,TemporaryUI为ChildUI的数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在子UI里简单改一下颜色用来区分
在这里插入图片描述

最后在添加小图标之后和每次缩放之后调用
在这里插入图片描述
在这里插入图片描述

效果展示

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值