我使用沿着由被隨機挑選不同的「部分」的軌道驅動角色做一個遊戲。它使用物理學,大多數物體有許多頂點,並且是用物理編輯器製作的。我的實現不太好,因爲每次需要新節時都會重新創建每節。這會導致幀率跳躍,因爲它必須在遊戲過程中創建這些「時間關鍵」的大型物理實體。每個部分長2000像素,到目前爲止我有7個像素。有人可以告訴我一個更好的實現方法嗎?謝謝!科羅娜SDK隨機物理景觀
這是我的用於拾取和創建隨機部分功能:
local secNeeded=false
local secNum=2
local totallength=-800
local function newSec()
if secNeeded==true then
local levNum=math.random(1, 7)
if secNum==1 then
display.remove(group1)
group1 = nil
group1=display.newGroup()
game:insert(group1)
end
if secNum==2 then
display.remove(group2)
group2 = nil
group2=display.newGroup()
game:insert(group2)
end
if secNum==3 then
display.remove(group3)
group3 = nil
group3=display.newGroup()
game:insert(group3)
end
if levNum == 1 then
createRamp()
end
if levNum == 2 then
createdoubleRamp()
end
if levNum == 3 then
createHill()
end
if levNum == 4 then
createRampHill()
end
if levNum == 5 then
createUpHill()
end
if levNum == 6 then
createDownHill()
end
if levNum == 7 then
createTunnel()
end
end
secNum=secNum+1
if secNum==4 then
secNum=1
end
end
local function wheelMid(event)
--print(totallength)
--print(wheel.x)
if wheel.x>totallength then
secNeeded=true
newSec()
end
end
Runtime:addEventListener("enterFrame", wheelMid)
和創建函數
function createHill()
local mega=display.newGroup()
local guide = display.newRect(0,0, 2000, 50)
guide.x=totallength+2000
guide.y=totalheight
guide.alpha=0
mega:insert(guide)
local ground = display.newImageRect("ground.png", 2000, 600)
ground.x=guide.x
ground.y=guide.y+200
mega:insert(ground)
physics.addBody(ground, "static", { friction=0.5 })
local hill= display.newImageRect("hill2.png", 1400, 900)
hill.x=guide.x+300
hill.y=guide.y-534
mega:insert(hill)
physics.addBody(hill, "static", physicsData:get("hill2"))
if secNum==1 then
group1:insert(mega)
end
if secNum==2 then
group2:insert(mega)
end
if secNum==3 then
group3:insert(mega)
end
totallength=guide.x
secNeeded=false
end
的基團是示例所以有3個部分存在於一次。 什麼是更好的方式來實現這一點,消除了跳幀?我會非常感謝有人能幫助我或指引我朝着正確的方向發展!
山姆沒有答案爲你工作? – Schollii
重複http://stackoverflow.com/questions/22674505/corona-sdk-preload-images-and-physics-bodies?rq=1 – Arash