我正在制作一个跳跃游戏,屏幕左侧有一个物体,在平台上。一旦对象成功跳转并落在右侧平台上,它就会执行以下操作:
1)右边的平台向左移动
2)左边的平台(你刚跳出来)在屏幕外移动。
3)新平台应该出现在屏幕的右侧,从而继续循环。
我已经完成了允许对象跳转的功能,并显示碰撞是否成功。我的问题是,我上面提到的3件事情发生了,但它继续前进并且不会停止让对象进行下一次跳跃。这使得物体也离开屏幕,因为平台继续向左移动。调试后,我觉得问题出在碰撞发生的地方。这是因为,一旦它接触到平台,碰撞就会继续发生,直到物体离开平台。我想知道你们是否可以帮助我!
以下是我的相关代码的一部分:
local onPlatform = false
local gameStarted = false
function playerCollision( self, event )
if ( event.phase == "began" ) then
--if hit bottom column, u get points
if event.target.type == "player" and event.other.type == "bottomColumn" then
print ("hit column")
onPlatform = true
else
--if hit anything else, gameOver
--composer.gotoScene( "restart" )
print ("hit ground")
end
end
end
function moveColumns()
for a = elements.numChildren,1,-1 do
--speed of columns moving
--if greater than -100, keep moving it to left
--puts platform at the right and stops
if (elements[a].x > display.contentWidth/1.1) then
elements[a].x = elements[a].x - 12
end
--moves platform to left after it successfully lands
if (onPlatform == true) then
if (elements[a].x > display.contentWidth/3 and elements[a].x < display.contentWidth/1.11) then
elements[a].x = elements[a].x - 12
end
end
--moves left platform to off-screen and deletes after it passes a certain X-axis
if (onPlatform == true) then
if(elements[a].x > -100 and elements[a].x < display.contentWidth/2.99) then
elements[a].x = elements[a].x - 12
--adds score if it goes past a certain X-axis at left side
elseif(elements[a].x < -100) then
mydata.score = mydata.score + 1
tb.text = mydata.score
elements[a].scoreAdded = true
elements:remove(elements[a])
elements[a] = nil
end
end
end
end
答案 0 :(得分:0)
你什么时候调用moveColumns?你能从playerCollision中调用它并删除onPlatform变量吗?可能需要更多代码来帮助正确。