2016-06-22 28 views
0

In meinem Spiel erzielt der Benutzer einen Punkt, wenn ein Ballon den oberen Rand des Bildschirms berührt. Es verliert auch einen Punkt, wenn ein Ballon eine Bombe berührt. Das Problem ist, wenn ein Ballon eine Bombe berührt, verschwindet sie, wie sie sollte, aber es nimmt viel zu viel von der Punktzahl irgendwo zwischen 5 und 30. Dies ist mein erstes Spiel in Corona SDK, so dass ich immer noch lerne. Hier ist mein Teil meines Codes mit dem Problem:Corona SDK fügt der Punktzahl zu viel hinzu

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 

Bitte Hilfe! Vielen Dank!

Antwort

0

Eine gute Möglichkeit, doppelte Ereignisse zu verhindern, ist ein boolescher Wert, der bestimmt, ob der Ballon bereits getroffen wurde und jetzt inaktiv ist.

Sie sollten etwas tun:

  • Give Ballon die Eigenschaft hasCollided und setzen Sie ihn auf false
    • balloon.hasCollided = false
  • Überprüfen Sie den Kollisionszustand im Kollisionsereignis und ändern der Zustand Ihres Ballons

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

Awesome es behoben mein Problem, Danke! – Ninja