2016-04-25 11 views
-1

Ich versuche, ein einfaches Ausweichen Spiel zu machen, das eine Aufnahme enthält, die vom oberen Rand des Bildschirms fällt: „wpLaser“Wie kann ich alle erstellten Objekte vom Bildschirm entfernen?

Wenn der Spieler den Pickup berührt, ich all die gelaicht Projektile wollen („default“) auf dem Bildschirm (das ist möglich)

das Problem ist, dass ich die Projektile Laich fortgesetzt werden soll entfernt werden, nachdem die Aufnahme

hier abgeholt wurde als Referenz ein Teil des Codes ist:

local composer = require("composer") 
local widget = require("widget") 
local scene = composer.newScene() 

local physics = require("physics") -- Using physics for collision detections 
physics.start() 
physics.setGravity(0, 0) 

-- Object group for removal 
local objectGroup = display.newGroup() 

-- Set Variables 
_W = display.contentWidth; -- Get the width of the screen 
_H = display.contentHeight; -- Get the height of the screen 

function scene:create(event) 
    local sceneGroup = self.view 

Hier sind die Geschosse, die ich entfernt werden soll, wenn der Spieler den Pickup berührt:

-- Projectiles 
    local numberDefault = 1 --local variable; amount can be changed 

    local function clearDefault(thisDefault) 
     display.remove(thisDefault) ; thisDefault = nil 
    end 

    local function spawnDefault() 
     for i=1,numberDefault do 
      local default = display.newImage("projectiles/default.png") 
      default.x = math.random(0, _W) 
      default.y = -100 
      default.myName = "default" 
      default.class = "default" 

      physics.addBody(default, "dynamic", { density = 0, friction = 0, bounce = 0, isSensor = true, radius = 30 }) 
      transition.to(default, { x = math.random(0, _W), y = 1200, time = 4000, onComplete = clearDefault }) 

      objectGroup:insert(default) 
     end 
    end 

    timerDefault = timer.performWithDelay(250, spawnDefault, 0) -- spawn 1 every 250 units 

Und dies ist der Pickup selbst:

-- Laser power-up 
    local numberWpLaser = 1 --local variable; amount can be changed 

    local function clearWpLaser(thisWpLaser) 
     display.remove(thisWpLaser) ; thisWpLaser = nil 
    end 

    local function spawnWpLaser() 
     for i=1,numberWpLaser do 
      local wpLaser = display.newImage("images/wpLaser.png") 
      wpLaser.x = math.random(0, _W) 
      wpLaser.y = -100 
      wpLaser.myName = "wpLaser" 

      physics.addBody(wpLaser, "dynamic", { density = 0, friction = 0, bounce = 0, isSensor = true, radius = 40 }) 
      transition.to(wpLaser, { x = wpLaser.x, y = 1200, time = 5000, onComplete = clearWpLaser }) 

      objectGroup:insert(wpLaser) 

     end 
    end 

    timerWpLaser = timer.performWithDelay(5000, spawnWpLaser, 0) -- spawn 1 every 5000 units 

-- Collision detection events 
    local function onCollision(event) 
     if event.phase == "began" then -- event is only called when it begins (not when it ends) 
      if (event.object1.myName == "player" and event.object2.myName == "default") then 
       print("You Died") 

Dies ist, wo ich Schwierigkeiten habe. Wenn der Spieler den Tonabnehmer berührt, möchte ich, dass alle auf dem Bildschirm hervorgebrachten Objekte entfernt werden, ABER, um weitergespawnt zu werden. Derzeit werden die Projektile entfernt, aber ich kann sie nicht wieder zum Laichen bringen.

Entschuldigen Sie den ganzen Code hier, wenn Sie irgendeine Bestätigung über irgendetwas bitte fragen müssen. Unterstützung wird sehr geschätzt

Antwort

1

Jede "250 Einheiten" Sie spawnDefault, die Objekte ObjektGroup hinzugefügt. In Ihrem Handler für "player touch the pickup" setzen Sie objectGroup auf nil. Also sag mir, wo wird spawnDefault Objekte zum nächsten Mal hinzufügen?

+0

Also, sagst du, dass es ein Fehler ist, objectGroup zu entfernen? Gibt es eine alternative Möglichkeit für mich, die Objekte zu entfernen, die gerade auf dem Bildschirm angezeigt werden? – Usagi

+2

Sie haben einen Schreibtisch mit einer Box darauf sitzen. Es enthält Spielzeug. Sie möchten die Spielsachen aus dem Raum entfernen, aber Sie werden später mehr Spielzeuge mitbringen. Nimmst du das Spielzeug aus der Schachtel? Oder nimmst du die Kiste aus dem Raum? Wenn du die Kiste aus dem Raum gehst, wo wirst du die neuen Spielzeuge hinstellen? – zeromus

+0

Ich verstehe, was Sie sagen - dass ich nicht objectGroup entfernen sollte. Aber weißt du einen anderen Weg, um die Projektile zu entfernen? Es tut mir leid, ich bin nicht sehr erfahren in der Codierung. – Usagi

Verwandte Themen