我不知道如何在标题中最好地描述这个问题,但我会给你看图片以说明我的意思。
(1)图1显示了我遇到的问题
(2)图2显示了我想要实现的目标。
- 问题 - 正如你所看到的那样,我试图使3个块对齐除了尖峰,然后挤出。当我在日冕中设置它时,它基本上使图像按高度对齐。
这是我的spawn函数:
function createBlock(event)
b = display.newImageRect("images/Spike.png", 37,80)
b.x = display.contentWidth + 100
b.y = math.random(2) == 1 and display.contentCenterY -75 or display.contentCenterY +40
b.rotation = math.random(2) == 1 and 0 or 180
b.name = 'block'
physics.addBody( b, "static", physicsData:get("Spike"))
blocks:insert(b)
end
编辑:
function check( event )
if b.rotation == 180 then
b.y = math.random(2) == 1 and display.contentCenterY - 80 or display.contentCenterY + 30
end
end
答案 0 :(得分:0)
如果物体的高度为H并且尖峰的高度为S(因此3个块的高度为H-S),并且您将它们当前定位在Y处,Y向屏幕底部增加,并且对象的原点位于最底部块(相对尖峰)的底部,它们的默认方向是尖峰,然后:
如果第一段中的任何条件不同,您将不得不进行相应的调整,但希望这表明如何弄清楚。
更新:
可能更好的方法是移动锚点,使其位于中间正方形的中心。默认情况下,锚点为0.5,因此将其置于第2和第3个正方形之间(假设距离峰值最远的正方形是“第一个正方形”)。由于你的Block由4个单元格(3个正方形和一个尖峰)组成,你可以这样做:
function createBlock(event)
local H = 80
local b = display.newImageRect("images/Spike.png", 37, H)
b.x = display.contentWidth + 100 -- NOTE: weird, doesn't this put the obj off screen?
local cellH = H/4 -- assume all four cells in a Block have this height
b.anchorY = 0.5 - 0.25/2 -- each cell is 0.25 of height, need half that, away from spike
b.rotation = math.random(2) == 1 and 0 or 180 -- will rotate around the new anchorY
local posY = display.contentCenterY - 75
b.y = math.random(2) == 1 and posY or posY + 115
b.name = 'block'
physics.addBody( b, "static", physicsData:get("Spike"))
blocks:insert(b)
end
请注意,b.anchorY
可能必须为b.anchorY = 0.5 + 0.25/2
,具体取决于您创建图片的方式,但它应为+或 - 1/8。