2016-06-22 4 views
0

В моей игре пользователь набирает очки, когда воздушный шар касается верхней части экрана. Он также теряет смысл, когда воздушный шар касается бомбы. Проблема в том, что воздушный шар касается бомбы, которую они исчезают, как и следовало ожидать, но она слишком сильно забивает счет от 5 до 30. Это моя первая игра в Corona SDK, поэтому я все еще участвую. Вот моя часть моего кода с проблемой:Corona 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

Хорошим способом предотвращения двойных событий является наличие булева, которая определяет, был ли воздушный шар уже поражен и теперь «неактивен».

Вы должны сделать что-то вроде этого:

  • Дают BALLOON свойство hasCollided и установить его в ложном
    • balloon.hasCollided = false
  • Проверьте состояние столкновений в вашем случае столкновения и изменения состояние вашего воздушного шара

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

Удивительно, что он исправил мою проблему, спасибо! – Ninja

Смежные вопросы