Lua 六边形的顶点

Lua 六边形的顶点,lua,coronasdk,Lua,Coronasdk,好的,我正在尝试为我的游戏创建六边形。我的第一个选择是有几个六边形的图像,但是我在可点击区域上遇到了问题,因为这些图像是并排放置的 所以我想我唯一的选择就是使用多边形创建对象。以下是corona sdk网站上的代码: local halfW = display.contentWidth * 0.5 local halfH = display.contentHeight * 0.5 local vertices = { 0,-110, 27,-35, 105,-35, 43,16, 65,90,

好的,我正在尝试为我的游戏创建六边形。我的第一个选择是有几个六边形的图像,但是我在可点击区域上遇到了问题,因为这些图像是并排放置的

所以我想我唯一的选择就是使用多边形创建对象。以下是corona sdk网站上的代码:

local halfW = display.contentWidth * 0.5
local halfH = display.contentHeight * 0.5

local vertices = { 0,-110, 27,-35, 105,-35, 43,16, 65,90, 0,45, -65,90, -43,15, -105,-35, -27,-35, }

local o = display.newPolygon( halfW, halfH, vertices )
o.fill = { type="image", filename="mountains.png" }
o.strokeWidth = 10
o:setStrokeColor( 1, 0, 0 )

该代码用于创建星形。但我不知道如何使用顶点创建六边形。

尝试以下方法创建顶点数组:

local R = 45
local N = 6
local vertices = {}
local i = 0
for t = 0, 2*math.pi, 2*math.pi/N do
    i=i+1; vertices[i]= R*math.cos(t)
    i=i+1; vertices[i]= R*math.sin(t)
end
这个画六边形:

local halfW = display.contentWidth * 0.5
local halfH = display.contentHeight * 0.5

local hexagon = display.newPolygon( halfW, halfH, vertices )
hexagon.fill = { type="image", filename="mountains.png" }
hexagon.strokeWidth = 10
hexagon:setStrokeColor( 1, 0, 0 )

我选择了
R=45
来生成一个与你的恒星大小相同的多边形。

你总是可以使用graphics.newMask()对每个图像十六进制应用一个遮罩,这会使外部区域不可触摸。

注意:要在物理库中使用它,for循环需要顺时针进行<代码>对于t=0,-2*math.pi,-2*math.pi/N do