Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: SeltsamMitHut am 27. Oktober 2008, 20:29:42
-
Hiho!
Hier mein (hoffentlich) kleines AGS-Problem:
Ein Raum soll anfänglich nur zu einem gewissen Teil sichtbar sein (z.B. die ersten 400 Pixel von 500 gesamt). Das heißt, dass die Kamera dem Charakter nur bis zu einer gewissen X-Koordinate nachscrollt, dann aber stoppen. Der Rest des Raumes soll später zu sehen sein (die Kamera scrollt dann weiter, die ganzen 500 Pixel).
Frage: Gibt es einen Befehl, der die Kamera in einem Raum nur bis zu einem gewissen Punkt scrollen lässt?
Meine Idee wäre, das Scrollen in dem Raum einfach ganz zu deaktivieren und immer die Viewport auf die Koordinaten des Charakters zu setzen, sodass man immer nur überprüfen muss, ob seine X-Koordinate unter 400 liegt. Aber vielleicht gibt es ja eine komfortablere Möglichkeit. ;)
Schon mal vielen Dank für eure Hilfe! :)
-
bool alles_scrollen; // ist anfangs false
function set_camera() {
int x = player.x - 160;
if (x < 0) x = 0;
if (!alles_scrollen) if (x > 80) x = 80;
else if (x > 180) x = 180;
SetViewport(x, 0);
}
// room's before fade_in
set_camera();
// room's rep_ex event function
set_camera();
Nicht getestet!
-
if(alles_scrollen){
if(GetViewPortX >= 400){
SetViewport(400,GetViewPortY)
}
else ReleaseViewPort();
}
So vllt?
-
Würde nicht einfach
if(alles_scrollen){
if(GetViewPortX >= 400){
SetViewport(400,GetViewPortY)
}
}
bei rep_execute reichen?
Danach würde er gar nicht mehr zurück nach links scrollen.
-
if(alles_scrollen){
if(GetViewPortX >= 400){
SetViewport(400,GetViewPortY)
}
else ReleaseViewPort();
}
So vllt?
Verdammt,editiert statt zitiert.Mist.
-
edna_mausi, warum postest du 16 Stunden später Code, der weder von der Syntax noch von der Funktion passt, obwohl SeltsamMitHut noch nichts geantwortet hat...?
-
Vielleicht ist es keine elegante Lösung, aber könnte man nicht einfach die Walkable-Area kürzen, so dass die Figur nur bis zum gewünschten Bildausschnitt gehen kann? ???
-
Vielleicht ist es keine elegante Lösung, aber könnte man nicht einfach die Walkable-Area kürzen, so dass die Figur nur bis zum gewünschten Bildausschnitt gehen kann? ???
Die betreffende Walkable Area müsste 120 Pixel vor dem gewünschten Rand enden. Dann könnte man ja noch eine andere machen. Und nur wenn der Spieler auf der ersten Area ist, dann wird gescrollt. Das müsste auch gehen.
@edna_mausi: Auch dann scrollt er nicht zurück, weil der Viewport auf x=400 gesetzt wurde. Danach ist die Abfrage immer wahr.
-
Viele Dank für eure Hilfe. :)
Der Code von KrisMUC funktioniert super. Es gibt nur ein kleines Problem: Wenn die Kamera mit dem gehenden Charakter mitscrollt und man ihn dann mit "Gehe zu" woanders hinschickt, "zuckt" das Bild. Es sieht aus als würde der Charakter leicht nach hinten zucken, obwohl das wohl eher an dem Setzen der Kamera liegt. Sobald nicht gescrollt wird taucht der Fehler auch nicht auf. :-\
-
Bei solchen Fehlern empfiehlt es sich oft, das Spiel mal mit einer neueren AGS-Version zu testen. Oft sind solche Kleinigkeiten bereits behoben.
Falls Du also noch mit 2.72 arbeitest, probiers einfach mal aus.
-
Hallo!
Über "Regions" müsste sowas ja theoretisch auch umsetzbar sein, oder?
Mir ist da noch insbesondere bei der Episode "Helden des Tages" aufgefallen, wo sogar ein Scrolling von oben nach unten und umgekehrt eingebaut ist.
Da hätte ich allerdings jetzt keine Idee, wie das funktionieren könnte. ;)
BG der Volltanker
-
Warum?Scrolling von oben nach unten funktioniert auch nicht anders wie Scrolling von links nach rechts,nur in andere Richtungen.
-
Von oben nach unten bzw. umgekehrt tauchen aber andere Probleme auf, wegen der Bildschirmaufteilung (Interface), etc. ;)
BG
der Volltanker
-
Wieso?das einzige,dass man tun muss,ist die schwarzen Balken wieder an den unteren bzw. oberen ´Rand der Hintergründe zu tun.