2016-06-22 11 views
0

私のゲームでは、バルーンが画面の上部に触れるポイントをユーザーが獲得します。また、バルーンが爆弾に触れるとポイントを失う。問題は、バルーンが爆弾に触れて欲しいのと同じように消えるときですが、スコアが5から30まであまりにも大きくなりすぎることです。これはコロナSDKの最初のゲームなので、まだ学習しています。ここで問題のコードの一部です:コロナSDKがスコアにあまりにも多くを追加しています

local function onCollision(event) 
     if (event.phase == "began") then 
      event.object1:removeSelf() 
      event.object2:removeSelf() 

      score = score - 1 
      scoreText.text = score 
     end 
    end 

    local function addBomb() 
     local startX = math.random(display.contentWidth * 0.1,  display.contentWidth * 0.9) 

     local bomb = display.newImage("bomb.png", startX, -10) 
     physics.addBody(bomb, "dynamic") 
     Runtime:addEventListener("enterFrame", bomb) 
     bomb:addEventListener("touch", bombTouched) 
    end 

    local function addBalloon() 
     local startX = math.random(display.contentWidth * 0.1, display.contentWidth * 0.9) 

     local balloon = display.newImage("red_balloon.png", startX, display.contentHeight + 50) 
     physics.addBody(balloon, "dynamic") 
     balloon.gravityScale = -1 
     balloon.enterFrame = offscreen 
     Runtime:addEventListener("enterFrame", balloon) 
     Runtime:addEventListener("collision", onCollision) 
    end 

ご協力ください!ありがとう!

答えて

0

ダブルイベントを防止する良い方法は、バルーンがすでに叩かれていて現在「非アクティブ」であるかどうかを判断するブール値を持つことです。与えるプロパティhasCollidedバルーンや、あなたの衝突イベントと変更に衝突状態をチェックし、偽

  • balloon.hasCollided = false
  • に設定

    • あなたはこのような何かを行う必要がありますあなたの気球の状態

      if(!balloon.hasCollided) { 
          ...collision logic 
          balloon.hasCollided = true 
      } 
      
  • +0

    恐ろしく私の問題を修正しました。ありがとうございます! – Ninja

    関連する問題