Pacmanclon

Posted By: Disaster

Pacmanclon - 08/14/06 11:25

Hi
Ich möchte einen Pacman-Clon machen und habe jetzt ein Problem bei den Punkten...
Ich habe schon den Code aus dem AUM benutzt aber das funktioniert irgendwie nicht. Wenn die Spielfigur zu dem Punkt kommt dann verschwindet er einfach nicht...

action punkt
{
my.push = -1;
my.z = player.z;
my.passable = on;
while (my != null && player != null)
{
if (vec_dist (my.x, player.x) < 10)
{
ent_remove (my);
score += 10;
}
wait (1);
}
}

Wenn ich noch ein if mit my.y und player.y einsetzte dann verschwindet der Punkt zwar aber er tut dies schon wenn der Player in x-Richtung noch weit entfernt ist. Da wird nur nach dem y-Wert geschaut...
Kann mir bitte jemand helfen??

mfg
Disaster
Posted By: anarchie2199

Re: Pacmanclon - 08/14/06 15:27

Verwende einen höheren Wert als 10, 10 Quants können unter Umständen zu wenig sein.
Besser wäre aber Kollisionserkennung und ein event beim Spieler.


MFG,
Punker.
Posted By: Disaster

Re: Pacmanclon - 08/14/06 19:10

Auch bei einem höheren Wert geschieht nichts...
Kannst du mir aber vielleicht sagen ob es ein Tutorial zur Kollisionserkennung gibt? Ich hab sowas noch nie gemacht und aus der Beschreibung im Handbuch werde ich auch nicht schlau...
Posted By: Freddy_dup1

Re: Pacmanclon - 08/14/06 19:18

Versuch mal:

Code:
action punkt{ 
my.push = -1;
my.z = player.z;
my.passable = on;
while(my.skill1!=1){
while(player==null){wait(1);}
if (vec_dist (my.x, player.x) < 10){ my.skill1=1;}
wait (1); }
ent_remove (my);
score += 10; }



Wenn es den Player am Anfang noch nicht gibt wird die while schleife nicht gestartet (übersprungen). Danach kommt ja nichts mehr...
Posted By: Xarthor

Re: Pacmanclon - 08/14/06 22:12

Nicht sehr viel anders aber vielleicht ein bisschen weniger fehler anfällig, da kein ent_remove aus der while() schleife und keine ineinander verschachtelten while() schleifen:
Code:

action punkt
{
my.push = -1;
my.z = player.z;
my.passable = on;

my.skill1 = 1;

while(!player) { wait(1); }
while(my.skill1)
{
if (vec_dist (my.x, player.x) < 10)
{
my.skill1 = 0;
}
wait (1);
}

score += 10;
ent_remove(me);
}


Posted By: Seem2B

Re: Pacmanclon - 08/15/06 09:22

nimm mal das my.passable = on; aus deinem code raus.
ich hab mal n ähnliches spiel gemacht, bei dem man auch münzen sammeln musste, und da hab ich das gleiche problem, wenn ich in die action für die münzen my.passable = on; reinschreibe.
Posted By: Disaster

Re: Pacmanclon - 08/15/06 09:42

Danke für eure Hilfe! Der Code funktioniert jetzt, allerdings lag es gar nicht an dieser Action...
Mein Script-Editor macht zur Zeit nur noch merkwürdige Sachen.
Ich hab zwar enable_push = on in meiner Figuraction gesetzt, und auf Speichern gedrückt, aber der Scripteditor hat nur so getan als ob. In wirklichkeit hat er garnichts gespeichert und deshalb ging natürlich der Code nicht.
Mit der Standard Version kann ich mir aber leider keine Updates laden und eine Neuinstallation bringt komischerweise auch nichts...
Hatte irgendjemand von euch vielleicht schon mal ein ähnliches Problem?
© 2024 lite-C Forums