PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SpaceShooter - Asteroidenproblem



Rash
02.02.2005, 21:16
Hi,

ich arbeite gerade an einem Space Shooter Minigame in dem Asteroiden von oben kommen, denen der Spieler ausweichen muss/soll/kann.

Ich möchte die Asteroiden so Programmieren, dass sie, wenn sie am raumschiff vorbeigeflogen, oder abgeschossen wurden an eine zufälligen position am oberen rand der map wieder beginnen nach unten zu fliegen.

Ich weiß aber nicht genau wie ich das anstellen soll...

Könnt ihr mir helfen?

Gruß
Rash

eisRegen2k4
02.02.2005, 21:32
lass ne zufallszahl (0 bis (breite der map in tiles - 1)) generieren -> in eine variable speichern

und dann: "change event location" als x deine variable und y ne konstante (=0) die legst du vorher an...
somit werden die asteroiden zufallsgesteuert gerespawnt

Rash
05.02.2005, 22:45
Muss ich dann für jeden Asteriden eine Variable ändern?
Weil bei einer mussten die ja, wenn sie gleichzeitig gerespawnd werden, an derselben stelle rauskommen...

Geiu
05.02.2005, 23:04
Weil bei einer mussten die ja, wenn sie gleichzeitig gerespawnd werden, an derselben stelle rauskommen...
Du fragst doch jeden Astroiden getrennt ab (anders gehts ja net weil man Variablen nicht als Event-ID nutzen kann), also wird er auch getrennt gerespawnt.

eisRegen2k4
06.02.2005, 00:24
sprich du brauchst nur eine variable...
allerdings könnte es passieren, dass die asteroiden an der gleichen stelle gerespawnt werden!
in diesem fall lässt du einmal die variable in eine temporäre speichern
um eine teleportposition mit der vorherigen zu vergleichen

z.b.


//die variable temp_var muss anfangs auf -1 gesetzt werden (parallel oder autostart)
if temp_var == -1
xposition = random(0 bis (mapbreite-1))
temp_var = xposition
eventteleport(xposition, 0)
else
schleife:
xposition = random(0 bis (mapbreite-1))
if xposition == temp_var
goto schleife
end
eventteleport(xposition, 0)
temp_var == -1
end

//die variable temp_var wird bei jedem teleport gesetzt (wenn sie vorher -1 beträgt
//bei einem erneuten teleport dient sie als vergleichswert, um zu guggen ob die neue
//position ungleich der alten is, und wird anschliessend wieder auf -1 gesetzt... dann wiederholt sich das ganze