eBlock und eNoBlock gleichzeitig?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
KelThuzad
Frischling
Frischling
Beiträge: 8
Registriert: 04.03.2006, 15:11
Kontaktdaten:

eBlock und eNoBlock gleichzeitig?

Beitrag von KelThuzad »

Sry, für den Thread-Titel, ich wusste nicht genau wie ich ihn nennen sollte...
Bei meinem aktuellen Projekt würde ich gerne folgendes realisieren:
Der Held benutzt ein Objekt(in meinem Fall ist es ein Roboter), das dann einen Weg im Raum abfahren soll(2mal quer durch den Raum). Danach soll es wieder an dem Punkt sein wo es am Anfang stand. Gleichzeitig soll man sich aber mit dem Spielercharakter bewegen können; Das ist nun aber ein Problem:
Wenn ich folgendes benutze:

move(x1,y1,eBlock);
move(x2,y2,eBlock);
move(x3,y3,eBlock);

Um das Objekt einen bestimmten Weg entlang zu bewegen kann ich gleichzeitig meinen Charakter ja nicht bewegen (wegen dem eBlock).
Wenn ich aber eNoBlock nehme, dann funktioniert das mit den mehreren move befehlen hintereinander nicht mehr..
Als Animation kann ich die bewegung auch nur sehr schwer machen, da das extrem viele einzelbilder benötigen würde, die bestimmt 5 loops füllen würden.
Kennt ihr irgendwelche Methoden um das zu realisieren?
Man müsste praktisch die move befehle sich blocken lassen, aber ohne das der Rest vom spiel geblockt wird..
danke für eure Hilfe,
KelThuzad
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

character control module von strazer ->
http://www.bigbluecup.com/yabb/index.php?topic=24489.0
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ohne module geht das so:

Code: Alles auswählen

// room script
int state=0;

// room repeatedly execute
int x;
int y;
if (state>0 && state<4 && cRobot.Moving==false) {
  if (state==1) { x=x1; y=y1; }
  if (state==2) { x=x2; y=y2; }
  if (state==3) { x=x3; y=y3; }
  state++;
  cRobot.Move(x, y, speed, eNoBlock, eAnyWhere);
}
Roboter benutzen -> state=1;
strazer
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 35
Registriert: 17.06.2005, 14:22

Beitrag von strazer »

Geht das nicht auch einfach mit der Character.AddWaypoint-Funktion?

Code: Alles auswählen

cRoboter.Walk(x1, y1, eNoBlock);
cRoboter.AddWaypoint(x2, y2);
cRoboter.AddWaypoint(x3, y3);
Ich weiss aber nicht ob diese Funktion auch den eNoBlock-Parameter übernimmt. Einfach mal ausprobieren.
KelThuzad
Frischling
Frischling
Beiträge: 8
Registriert: 04.03.2006, 15:11
Kontaktdaten:

Beitrag von KelThuzad »

Hey, danke für die vielen Antworten..
Ich habe jetzt meinen Droiden einfach in einen Character (vorher wars ein Object) umgewandelt, und strazers Methode genommen, das ging am einfachsten, und hat funktioniert.
Ein Hinweis aber noch, an alle die das vllt auch benutzen wollen:
mit dem Addwaypoint(x,y) Befehl ignoriert AGS alle Walkable Areas, das aber nur als kleiner Hinweis.
Antworten