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