Lichtstrahl durch Chararkter unterbrechen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Dave_Doofy
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 61
Registriert: 23.12.2010, 11:45
Kontaktdaten:

Lichtstrahl durch Chararkter unterbrechen

Beitrag von Dave_Doofy »

Hallo AGSler,

ich habe mal wieder eine Frage zu einer Idee für ein Rätsel.

Folgende Situation:
Der Held muss einen Schweinwerfer einschalten und in die richtige Richtung drehen um einen dunklen Bereich des Raumes zu erleuchten und ein Item zu finden.

Frage:
Ich wollte den Lichtstrahl sehr konzentriert (Spot) machen, der sehr gezielt ausgerichtet werden muss.
Da der Strahl durch den halben Raum geht kann es sein das der Charakter den Lichtstrahl kreuzt.
Wie kann ich das bewerkstelligen, das der Lichtstrahl durch den Charakter unterbrochen wird, also er sozusagen im Weg steht und der Lichtsstrahl nicht weiter leuchtet und die Ecke dunkel bleibt.

Bin für jede Idee und Tip dankbar.

Vielen Dank

Grüße
Dave

PS: ein neues Demovideo ist wieder online ;-)
Aktuelles Projekt

Jack Crow - Flucht aus der Zukunft

Demovideos unter:
http://www.youtube.com/watch?v=HECTWBRoWGI

Website mit Projektblog und kleinem Background Tutorial
http://dadsoft.jimdo.com/
Rexxar
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 68
Registriert: 02.08.2012, 11:27

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von Rexxar »

Ich weiß zwar nicht, wie du das machen willst, aber die Baseline könnte helfen. Der Lichtstrahl muss eine kleinere haben als der Charakter, glaub ich. Ich Habe mal einen Tisch als walkbehind genommen und das Objekt darauf musste ein höhere als der Tisch haben, damit es dahinter nicht verschwindet. Dann würde allerdings nur der Charakter vor dem Lichtstrahl stehen. Wenn vielleicht ein Objekt hinter dem Charakter wäre das wegen der Baselineeinstellung nur den Lichtstrahl versteckt und sonst nichts, ginge das vielleicht. Man sollte das Objekt natürlich nicht sehen können.
Mfg Rexxar
Benutzeravatar
Dave_Doofy
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 61
Registriert: 23.12.2010, 11:45
Kontaktdaten:

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von Dave_Doofy »

Was ich mir so ausgedacht habe war, dass der LIchtstrahl mit der surface.DrawImage aufgebaut wird.

Das funktioniert auch.

Ich habe eine Region angelegt unter dem Lichtstrahl. Wenn der Held die betritt wird der Lichtstrahl neu berechnet bis zu Charakter Position:

function region1_WalksOnto()
{
int Lichtx=500;
int Lichty=1000;

while (Lichtx>cJack1.x){
DrawingSurface *surface = Room.GetDrawingSurfaceForBackground();

surface.DrawImage(Lichtx, Lichty, 416 , 80);
Lichtx--;
Lichty--;
surface.Release();
}
}


Mein Problem ist nun, wie lösche ich ein mit surface.DrawImage erzeugten Lichtstrahl?
Aktuelles Projekt

Jack Crow - Flucht aus der Zukunft

Demovideos unter:
http://www.youtube.com/watch?v=HECTWBRoWGI

Website mit Projektblog und kleinem Background Tutorial
http://dadsoft.jimdo.com/
Rexxar
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 68
Registriert: 02.08.2012, 11:27

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von Rexxar »

Wenn du die Länge verändern kannst mach doch einfach den Lichtstrahl kürzer. (So 1x1 Pixel)Dann sieht man ihn. (Fast) nicht mehr.
Mfg Rexxar
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von KhrisMUC »

Du musst vorher ein backup des Hintergrunds machen.
http://www.adventuregamestudio.co.uk/ma ... teCopy.htm
Use gopher repellent on funny little man
Benutzeravatar
Dave_Doofy
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 61
Registriert: 23.12.2010, 11:45
Kontaktdaten:

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von Dave_Doofy »

Hi,

ich habe mir das mal angeschaut.
Alleine, einmal funktioniert das.
Nur wie mache ich das er ständig überprüft ob der Held auf der Region steht und dann den Strahl neu berechnet.

Ich kann die Befehle

DrawingSurface *backup = surface.CreateCopy();

und

surface.DrawSurface(backup);

nicht trennen, also einmal in room_RepExec() und der andere in region3_WalksOnto()

Auch wenn ich einen Teil in eine If-Schleife baue bekomme ich Fehlermeldung über undefined Symbol Backup

hat jemand noch eine andere Idee
Irgendwie steh ich auf dem Schlauch wie ich das machen könnte.

Grüße & thx
Dave
Aktuelles Projekt

Jack Crow - Flucht aus der Zukunft

Demovideos unter:
http://www.youtube.com/watch?v=HECTWBRoWGI

Website mit Projektblog und kleinem Background Tutorial
http://dadsoft.jimdo.com/
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von KhrisMUC »

Du musst backup als Raumvariable deklarieren:

Code: Alles auswählen

DrawingSurface* backup; // ganz oben, nicht innerhalb einer Funktion

function room_AfterFadein() {
  DrawingSurface* surface = Room.GetDrawingSurfaceForBackground();
  backup = surface.CreateCopy();
}
Jetzt kannst Du backup in jeder anderen Funktion verwenden, z.B. in room_RepExec().
Use gopher repellent on funny little man
Benutzeravatar
Dave_Doofy
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 61
Registriert: 23.12.2010, 11:45
Kontaktdaten:

Re: Lichtstrahl durch Chararkter unterbrechen

Beitrag von Dave_Doofy »

Hi,

Super!!! hat geklappt

Und funktioniert genauso wie ich es wollte

vielen Dank Dir

Grüße
Aktuelles Projekt

Jack Crow - Flucht aus der Zukunft

Demovideos unter:
http://www.youtube.com/watch?v=HECTWBRoWGI

Website mit Projektblog und kleinem Background Tutorial
http://dadsoft.jimdo.com/
Antworten