Hallo Leute, habe folgendes Problem:
in meinem Spiel schieße ich mit einem Lichstrahl verschiedene Entities ab. In Abhängigkeit davon, was es für eine Entity ist, gibt es unterschiedliche Punktezahl für den Abschuss. Solange die Entities eine nach der anderen erscheinen, ist das kein Problem. Wenn aber mehrere auf einmal kommen und ich die abschieße, zählt der Highscore irgendein Schwachsinn und ich kann nicht rauskriegen warum oder was habe ich falsch gemacht. Ist evtl. die Switch-Anweisung nicht das Richtige?
Hier mein Code für den Lichstrahl:
// Funktion für den Strahl
function strahlEvent(){
wait(1);
if(key_space){ // wenn Leertaste gedrück (Strahl an)
switch(you)
{
case ent_tropfen:
highscore += 10;
ent_remove(you);
break;
case ent_batterie:
highscore += 50;
ent_remove(you);
break;
case ent_stern:
highscore +=100;
ent_remove(you);
break;
}
}
}
// Aktion, die die Funktion strahlEvent aufruft
action strahlAction(){
while(1){
my.y = ent_lamp.y; // y-Position des Strahls ist identisch mit der der Lampe
// Strahl ausblenden
if(!key_space){
set(my, TRANSLUCENT | PASSABLE); // Strahl durchscheinend machen und Kollisionserkennung abgeschalten
my.alpha = 0; // Setzen des Transparenzwertes vom Strahl (unsichtbar)
}
// Strahl einblenden
if(key_space){
reset(my, TRANSLUCENT | PASSABLE); // Strahl reseten = Kollisionserkennung AN und sichtbar
my.alpha = 100; // Setzen des Transparenzwertes vom Strahl (sichtbar)
my.emask |= ENABLE_IMPACT; // mache Strahl für Kollisionen empfindlich
my.event = strahlEvent; // starte die Funktion strahlEvent, wenn Strahl mit etwas kollidiert
soundHandle = snd_play(sndLichtstrahl, 10, 0); // Startup-Sound abspielen
}
wait(1);
}
}