需求:由于地图中展示的元素增加,导致地图图片被放大,在地图界面不能完全显示,所以添加可拖动功能。
解决方案很简单:prefab调整, 逻辑编写(打开地图,玩家的图标尽可能靠中心位置)
一,在prefab上进行的调整
注:上图中m_MapBG_img是地图界面中地图显示框,m_miniMap_img是地图资源
在第一层级中添加两个组件(自查):Rect Mask 2D 和 scroll Rect
第一个组件是为了掩藏不需要显示的地图部分
第二个组件是拖动功能(注意弹性与惯性)
二,逻辑编写
注:第三层级是玩家自己的位置标志
下面的方法返回的是地图初始化时的位置坐标,这里需要传入三个参数(重点在取它们的位置坐标),可见框组件,地图资源组件,玩家位置坐标
---@param pos Vector3
function TargetMapLocationByMyPos(viewImg, mapImg, pos)
local mapPosX = 0
local mapPosY = 0
local viewWidth = viewImg.rectTransform.sizeDelta.x / 2
local viewHeight = viewImg.rectTransform.sizeDelta.y / 2
local mapWidth = mapImg.rectTransform.sizeDelta.x / 2
local mapHeight = mapImg.rectTransform.sizeDelta.y / 2
local diffWidth = math.abs(viewWidth - m