"Sidescrolling" wie bei Baphomets Fluch

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Retro-Guy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 12.11.2009, 22:20
Kontaktdaten:

"Sidescrolling" wie bei Baphomets Fluch

Beitrag von Retro-Guy »

Hallo,

Bei Baphomets Fluch1&2 ist es ja so, dass wenn man mit dem Cursor in der Nähe des Bildschirmrandes ist und der Ort(Background) größer ist als der Bildschirm, dass sich der Cursor in eine Hand verwandelt, die diese "Komm zu mir-Bewegung" macht. Wenn man dann mit George in der Nähe des Bildschirmrandes(wo vorher die besagte Hand war), dann ereignet sich dieses "Sidescrolling" und der Bildschirm verschiebt sich zur anderen Seite.
Wie kann man das mit AGS umsetzen? Kann mir jemand helfen? [-o<

Vielen Dank!
Benutzeravatar
Helme
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 147
Registriert: 23.01.2009, 10:13

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von Helme »

Das Scrollen ist automatisch. Dein Raum muß nur größer sein als die Auflösung deines Spiels.

Hier gibt's ein Modul, dass das Scrollen schöner macht (Der Paralax-Effekt ist auch ganz schön):
http://www.bigbluecup.com/yabb/index.php?topic=33142.0

Die 'winkende Hand' à la Baphomets Fluch, dürfte nicht so einfach zu machen sein. Das würde ich einfach lassen. Wenn deine Hintergründe gut konzipiert sind, sieht man auch so, wo es weitergeht und wo nicht.
Retro-Guy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 12.11.2009, 22:20
Kontaktdaten:

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von Retro-Guy »

Danke für den Link, war sehr hilfreich! :)
pikubik
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 76
Registriert: 09.04.2006, 17:51
Kontaktdaten:

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von pikubik »

da ich baphomets fluch 1&2 nie gespielt habe, bin ich mir nicht sicher ob du das gleiche meinst wie ich...
zumindest hörts sich von der beschreibung her so an.

vielleicht könnte dir dieser Thread hier helfen...
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von KhrisMUC »

Da die Mauskoordinaten immer relativ zum Screen sind, nicht zum Hintergrund, muss man eigentlich nur überprüfen, ob mouse.x == 0 oder == 319/639/... ist und die Maus entsprechend animieren. Da man bei AGS animierte Cursor einstellen kann, muss man nur zwei Cursor hinzufügen und mouse.Mode auf den entsprechenden Cursor setzen.

Code: Alles auswählen

// in rep_ex

  if (Room.Width > System.ViewportWidth) {
    if (mouse.x == 0) {
      if (mouse.Mode != eModeLeftBeckon) mouse.Mode = eModeLeftBeckon;
    }
    else if (mouse.x == SystemViewportWidth-1) {
      if (mouse.Mode != eModeRightBeckon) mouse.Mode = eModeRightBeckon;
    }
  }
  else {
    // standard mouseover code
  }
Zusätzlich könnte man dies in on_mouse_click machen:

Code: Alles auswählen

 // left click
  if (mouse.Mode == eModeLeftBeckon) player.Walk(0, mouse.y);
  else if (mouse.Mode == eModeLeftBeckon) player.Walk(639, mouse.y);
  else ProcessClick(mouse.x, mouse.y);
Bei Baphomets Fluch lief George nämlich immer weiter, wenn man ganz am Rand geklickt hat (oder wenn man die Maus am Rand gelassen hat).
Use gopher repellent on funny little man
Retro-Guy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 12.11.2009, 22:20
Kontaktdaten:

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von Retro-Guy »

An KhrisMUC,

Erstmal vielen Dank! :)
Also es hat alles funktioniert, nur wäre es möglich, dass sich der Mouse-Mode schon in der Nähe des horizontalen Bildschirmrandes ändert. Also im Moment ist es noch so, dass man mit dem Cursor erst ganz ganz nah an den Bildschirmrand gehen muss, bis sich der Mouse-Mode verändert.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von KhrisMUC »

Code: Alles auswählen

// in rep_ex

  int breite = 5;    // hier die Breite des Bereichs eintragen

  if (Room.Width > System.ViewportWidth) {
    if (mouse.x < breite) {
      if (mouse.Mode != eModeLeftBeckon) mouse.Mode = eModeLeftBeckon;
    }
    else if (mouse.x > System.ViewportWidth-(1+breite)) {
      if (mouse.Mode != eModeRightBeckon) mouse.Mode = eModeRightBeckon;
    }
  }
  else {
    // standard mouseover code
  }
Use gopher repellent on funny little man
Retro-Guy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 12.11.2009, 22:20
Kontaktdaten:

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von Retro-Guy »

Super! :D
Danke dir.
Nur noch eine klitze kleine Sache. :lol:
Der Mouse-Mode verändert sich nun immer, wenn ich in der Nähe des Bildschirmrandes bin. Auch, wenn es gar nicht mehr weiter geht. Wie könnte ich es anstellen, dass sich der Cursor nur dann verwandelt, wenn es auch wirklich weitergeht?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von KhrisMUC »

Mit GetViewPortX/Y() bekommt man den Raum-Pixel, der sich links oben auf dem Screen befindet.
Probiers mal selbst.
Um in der if-Bedingung zwei Checks zu verknüpfen, benutze && (logisches UND).
Use gopher repellent on funny little man
Retro-Guy
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 12.11.2009, 22:20
Kontaktdaten:

Re: "Sidescrolling" wie bei Baphomets Fluch

Beitrag von Retro-Guy »

Also ich habs versucht. Ich habe erreicht, dass der Cursor sich nicht mehr verändert, wenn es im Raum links nicht mehr weitergeht, aber nicht wenns rechts nimmer weitergeht :( . Bei der rechten Seite hatte ich deswegen meine Probleme, weil die Raumbreite ja nicht immer gleich ist. Ich habs mit "GetViewportX()<Room.Width" versucht, hat aber nicht geklappt :x .

Code: Alles auswählen

int breite = 10;    // hier die Breite des Bereichs eintragen

  if (Room.Width > System.ViewportWidth && (GetViewportX()>1)) {
    if (mouse.x < breite) {
      if (mouse.Mode != eModeLeftGo) mouse.Mode = eModeLeftGo;
    }
    else if (mouse.x > System.ViewportWidth-(1+breite) && (GetViewportX()<Room.Width)) {
      if (mouse.Mode != eModeRightGo) mouse.Mode = eModeRightGo;
    }
    else {
        mouse.Mode = eModeWalkto;
    }
Antworten