2012-08-08 27 views
0

我正在创建一款游戏,并且玩家必须收集硬币才能获得更大的分数。有3个硬币,当你收集一个硬币时,它会显示在用户界面的“硬币栏”上。硬币有3个空洞(如Cut the Rope和其他游戏)。目前,当玩家收集第二个硬币时,酒吧中的第二个洞被填满。我希望这些洞依次被填满,以便收集没有收集第一个硬币的第二个硬币将填满第一个洞。按照游戏顺序收集物品(Corona SDK)

下面是代码:

------投币酒吧

local coin_bar = {} 
    for i=1,3 do 
     coin_bar[i] = display.newImage ("coin_bar.png", 57, 57) 
    end 

    coin_bar[1].x = 325 
    coin_bar[1].y = 37 
    coin_bar[2].x = 385 
    coin_bar[2].y = 37 
    coin_bar[3].x = 445 
    coin_bar[3].y = 37 

--add硬币和处理

local coinSprites=grabber.grabSheet("starAnim") 
    local coinGroup = display.newGroup() 
    local coins = {} 
    isLiving = {} 
    for i=1,3 do 
     isLiving[i] = 1 
     coins[i] = coinSprites:grabSprite("",true,{ starAnim={1,6,200,0}}) 
     coins[i]:playClip("starAnim") 
     coinGroup:insert(coins[i]) 
    end 

    local function coinCollect(event) 
     for i=1, 3 do -- Nr of Coins 
      coin_clear = false 
      if isLiving[i] == 1 then 
       if ball.x > coins[i].x -40 and ball.x < coins[i].x +40 
       and ball.y > coins[i].y -40 and ball.y < coins[i].y +40 then 
       coins[i]:removeSelf() 
       coins[i] = nil 
       coins[i] = display.newImage ("coin_bar_collected.png", 57, 57) 
       coins[i].x = coin_bar[i].x 
       coins[i].y = coin_bar[i].y 
       isLiving[i] = 0 
       end 
      end 
     end 
    end 

    Runtime:addEventListener("enterFrame", coinCollect) 

回答

0

尝试更换所有的东西在这个硬币吧:

------Coin Bar 

local coin_bar = {} 
for i=1,3 do 
    coin_bar[i] = display.newImage ("coin_bar.png", 325+(i*60), 37) 
end 

看看是否可以解决您的问题。

0

为什么不加一个属性收集硬币吧跟踪上次使用的位置和使用?即:

local coin_bar = {collected = 0} 

... 

local function coinCollect(event) 
    for i=1, 3 do -- Nr of Coins 
     coin_clear = false 
     if isLiving[i] == 1 then 
      if ball.x > coins[i].x -40 and ball.x < coins[i].x +40 
      and ball.y > coins[i].y -40 and ball.y < coins[i].y +40 then 
      coins[i]:removeSelf() 
      coins[i] = nil 
      coins[i] = display.newImage ("coin_bar_collected.png", 57, 57) 
      local bar_index = coin_bar.collected + 1 
      coins[i].x = coin_bar[bar_index].x 
      coins[i].y = coin_bar[bar_index].y 
      coin_bar.collected = bar_index 
      isLiving[i] = 0 
      end 
     end 
    end 
end 
+0

谢谢你的人!硬币现在正确收集! – barmyman 2012-08-09 22:31:43

+0

你不介意帮助我这个小东西吗? http://stackoverflow.com/questions/10283740/collision-of-a-drawed-line-and-objectscorona-sdk在此先感谢! – barmyman 2012-08-09 22:33:31