Okay, dann schau´n wir mal...
Die Reihenfolge kannst du a) zeitlich mit unterschiedlichen Animationsgeschwindigkeiten laufen lassen und b) die Positionen x und y
per randomnum bestimmen.
Am einfachsten ist es, die Positionen x und y zu ändern, wenn das Fass
gerade explodiert ist und wieder zum Startpunkt bewegt werden soll.
So tauchen sie an unterschiedlichen Stellen auf.
Da ich viel mit den Objektanimationen arbeite, hier ein Beispiel, wie ich es
lösen würde :
setnum (ypos;[posy:fass1]) --->y position erfassen
if_num (ypos;750) ------->unterer Bildschirmrand z.B. erreicht
{
setobj (fass1;6) ------->Wartezeit in der Animation einstellen
randomnum (posx;750)
randomnum (posy;50)
moveobj (fass1;[posx];[posy];0)------>Zufallsstartpunkt
}
Zustand 6 enthält folgende Skriptzeilen am ende :
moveobj (fass1;400;400;5000ms)-----> Deine Zielkoordinaten
setobj (fass1;1)
Jedes Fass würde ich also mit mehreren Zuständen belegen :
1= sichtbar und abschießbar
2= Explosionsanimation mit Skripzeile zum Zurücksetzen->Zustand 3 folgt
3= Timer mit Skriptzeilen : Fass unsichtbar und Zurück auf Start
4= Explosionsanimation mit Skriptzeile, wenn 5. Treffer->Zustand 5 folgt
5= Fass 5x getroffen und unsichtbar
6=Warteschleife ohne Bild, nur Skriptzeilen bei Positionswechsel ohne
Abschuss
Wenn deine Waffe dann also den Zustand des Abfeuerns annimmt :
setobj (Waffe;1)
Jetzt die Abfrage, ob das Fass getroffen werden kann (z.B. im on (loop1) Teil)
if_obj (fass1;1)
{
if_num (Counter_1;<5)
{
setnum (counter_1;+1)
if_num (counter_1;5)
{
setobj (fass1;4) ------->Zustand 4 = Fass ist zum 5. mal
getroffen, letze
Explosionsanimation und dann auf Zustand 5
break()
}
setobj (waffe;0) -------->Waffenfeuer ausschalten, da Ziel getroffen
setobj (fass1;2) -------->Explosionsanimation mit Skriptzeilen und Fass
zurücksetzen.
}}
Zustand 2:
Wenn sie getroffen werden, läuft deine Explosionsanimation ab.
Schreibe dann in das letzte Bild :
setobj (fass1;3)
Zustand 3:
im Zustand 3 hat das Fass kein Bild, es läuft nur eine Zeitspanne ab.
In diese Frames schreibst du dann als Skriptzeilen :
moveobj (fass1;[Startposition1];0;0)
moveobj (fass1;[Zielposition_x];[Zielposition_y];5000ms)
setobj (fass1;1)
Die Koordinaten sind natürlich nur Beispiele.
Zustand 4 :
Wird ausgeführt, wenn das Fass zum 5. Mal getroffen wird.
Im Zustand 4 steht als letzte Skriptzeile: setobj (fass1;5)
Damit ist dieses Fass nach 5 Treffern weg, Zustand 5 hat kein Bild.
Die Explosionsgeräusche schreibst du am besten auch in die Animationszeilen
Vielleicht kannst du die Zustände ja auch auf deine art ändern (also mit 2 Angaben ) - da ich das aber noch nicht wusste, kann ich nicht sagen, ob das funktioniert.
Die korrekten Anfangszustände solltest Du im Startskript setzen oder im (on (enter) Teil des Raumes.
Übrigens...ich hab nie Mäuse gekillt
Aber alles vom C16 bis zum Amiga1200 mitgemacht...*hach*
![Banana :banana:](./images/smilies/banana.gif)