Току-що започнах да използвам Corona SDK и имам някои проблеми с прилагането на физика върху движещи се платформи.
По принцип имам платформи, които се движат отдясно наляво и когато обект кацне върху платформата, няма триене, обектът не успява да се движи с платформата, така че след като платформата се премести отдолу на обекта, обектът пада на дъното на екрана. Някой друг имал ли е този проблем? Предполагам, че може би физически обект губи някои от атрибутите си, но не знам кои.
Искам обектът да може да се движи с платформата в същата посока и скорост.
Ето примерен код:
.....
elements = display.newGroup()
elements.anchorChildren = true
elements.anchorX = 0
elements.anchorY = 1
elements.x = 0
elements.y = 0
screenGroup:insert(elements)
player = display.newImageRect("player.png",30,50)
player.anchorX = 50
player.anchorY = 50
player.x = 80
player.y = display.viewableContentHeight - 80
physics.addBody(player, "static", {density=.1, bounce=0.1, friction=1.0})
player:setLinearVelocity( 100, -600 )
screenGroup:insert(player)
.....
....
local gameStarted = false
function jumptoplatform(event)
if event.phase == "began" then
if gameStarted == false then
player.bodyType = "dynamic"
addplatformsTimer = timer.performWithDelay(1000, addplatforms, -1)
moveplatformsTimer = timer.performWithDelay(2, moveplatforms, -1)
gameStarted = true
player:setLinearVelocity( 100, -600 )
else
player:setLinearVelocity( 100, -600 )
end
end
end
function moveplatforms()
for a = elements.numChildren,1,-1 do
if(elements[a].x > -150) then
elements[a].x = elements[a].x - 6
else
elements:remove(elements[a])
end
end
end
function addplatforms()
platform1 = display.newImageRect("platform.png",200,80)
platform1.anchorX = 0
platform1.anchorY = 1
platform1.x = 450
platform1.y = yPosition()
physics.addBody(platform1, "static", {density=1, bounce=0.1, friction=1.0})
elements:insert(platform1)
end
.....
Може би трябва да добавя функция onCollision
, за да се справя?, или да използвам стави? Всяка идея ще бъде оценена..