我想知道一件事:
我想用物理和循环使这个矩形从左侧移动到右侧,并且当它离开leftscreen时让它消失,然后重新出现在右侧,
这是我在我的代码中所做的,但我想知道是否还有另一种最简单的方法。
使用transition.to是否更好?
Ps:我的游戏是一个无尽的亚军游戏,玩家从地板跳到空中的矩形 如果有人有这方面的教程,我明白了!谢谢
感谢所有人
local physics = require( "physics" )
physics.start()
physics.setDrawMode( "hybrid")
local _x = display.contentCenterX
local _y = display.contentCenterY
local speed = 10
local GroupMur1 = display.newGroup()
local Mur1 = display.newRect(680,25,680,25)
Mur1.x = _x +900
Mur1.y = _y +80
physics.addBody(Mur1, "static")
GroupMur1:insert(Mur1)
local a =1
local function update ()
if(a==1)then updateMur1() end
if(a==2)then updateMur2() end
end
function updateMur1 ()
GroupMur1.x =GroupMur1.x - speed
if(GroupMur1.x < -2000) then
GroupMur1:remove(1)
a=2
end
end
function updateMur2()
GroupMur1:insert(Mur1)
physics.addBody(Mur1, "static")
GroupMur1.x = _x + 900
a=1
end
timer.performWithDelay(1, update, -1)
答案 0 :(得分:0)
转换.to确实很有用且易于使用,但是如果你想使用物理,那么使用applyLinearImpulse(),如果你想使用碰撞检测,这将更容易。一旦矩形在屏幕外,使用if和then功能。它会是这样的:
if object.x > 500 then -- for example with a rectangle of 20 by 20
object.x = -20
end
答案 1 :(得分:0)
为了扩展@Fannick所说的,这应该是顺便说一下,触发它的通用方法(对于任何大小的任何对象)将是下面的代码。为此,我假设您有object.anchorX = 0
或object:setReferencePoint(display.CenterLeftReferencePoint)
,具体取决于您的SDK版本(前者适用于v2,后者适用于v1 - This link应该有助于消除差异)
--if the object is past the edge (screenOriginX used to scale for bigger devices)
if object.x > (display.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX - object.contentWidth
end
如果你有object.anchorX = 0.5
或object:setReferencePoint(display.CenterReferencePoint)
(或者没有设置 - 这两个都是默认值),那就是:
if object.x > (display.contentWidth + (object.contentWidth/2) - display.screenOriginX) then
object.x = 0 + display.screenOriginX - (object.contentWidth/2)
end
对于object.anchorX = 1
或object:setReferencePoint(display.CenterRightReferencePoint)
,它将是:
if object.x > (display.contentWidth + object.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX
end
希望你找到答案,如果你还没有!
古实
答案 2 :(得分:0)
我用速度让矩形开始移动,碰撞让它们消失 您的所有答案都有助于我了解更好的电晕SDK!