0

私はゲームを作成しています。そのゲームでは、プレイヤーはより大きなスコアを得るためにコインを収集する必要があります。コインは3枚あり、1枚集めるとUIの「コインバー」に表示されます。コイン用の空の穴が 3 つあります (Cut the Rope や他のゲームのように)。現在、プレーヤーが 2 番目のコインを収集すると、バーの 2 番目の穴が埋められます。最初のコインを集めていない2番目のコインを集めると最初の穴が埋められるように、穴を順番に埋めていきます。

コードは次のとおりです。

------コインバー

    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

-- コインと取り扱いを追加

    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 )
4

2 に答える 2

0

コインバーのすべてのものをこれに置き換えてみてください:

------Coin Bar

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

問題が解決するかどうかを確認してください。

于 2012-08-09T13:25:58.920 に答える
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
于 2012-08-09T14:47:02.983 に答える