unity之二维数组实现正六边形地图
左右上下相邻正六边形的位置坐标如下:
分析:
一行中,两个响铃六边形相差80,假设第一个x坐标为0,则下一个相邻六边形的x值为:
(x-1)*80
上下相邻两个六边形的X值相差-40,两两一循环,因此,可以用y值来确定X的偏移量:
local offX = y%2 == 0 and -40 or 0
最终x的坐标为:
local offX = y%2 == 0 and -40 or 0
(x-1)*80+offX
X的坐标确定啦,Y坐标就更简单了,上下两个相邻的y差值为70,假设第一个y坐标为0,则,对应的其他y坐标为:
(y-1)*70
最终,每个正六边形的坐标也就确定了,为:
local offX = y%2 == 0 and -40 or 0
go.transform.localPosition = Vector3.New((x-1)*80+offX,(y-1)*70,0)
完整代码如下:
ui.list = base:findobj("list")
ui.item = base:findobj("item")
local function RefreshUI()
local length = 8--长
local width = 4--宽
local itemList = {}
for y=1,width do
itemList[y] = {}
for x=1,length do
local obj = utils.addchild(ui.list,ui.item)
utils.findtext(obj,"Text").text = string.format("%s_%s",x,y)
itemList[y][x] = obj
local offX = y%2 == 0 and -40 or 0
itemList[y][x].transform.localPosition = Vector3.New((x-1)*80+offX,(y-1)*70,0)
SetActive(obj,true)
end
end
end
标题:unity之二维数组实现正六边形地图
作者:shirlnGame
地址:https://www.mmzsblog.cn/articles/2022/07/05/1656991861061.html
如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议!
本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!