 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 18.04.2006, 15:40 Titel: RPG: Scrollendes Feld. |
|
|
Hallo,
Ich hab mal wieder probleme mit meinem RPG Dungeon 2 / Dungeon 3.
ich hätte gerne ein spielfeld, das Tile*Tile Scrollt, der spieler ist immer in der mitte des spielfeldes (640x480, das sind glaub ich 20*15 tiles bei 32x32 px tilegröße). das wäre ja einfach. aber ich hab da probleme, vor allem wenn der spieler an den rand des spielfeldes kommt, denn dann soll nicht mehr gescrollt werden, sondern er läuft nicht mehri n der mitte des bildschirms.
Kennt jemand eine gute routine für so ein spielfeld oder kann eine schreiben?
-Jojo _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
Verfasst am: 19.04.2006, 14:09 Titel: |
|
|
hi jojo,
da ich mittlerweile ein bissl Erfahrung in solchen Sachen gesammelt habe, kann ich dir natürlich auch aushelfen. Du musst erstmal eine Kamera haben die abhängig von der Spielerposition ist. Also etwa folgenermaßen:
Code: | ' Das muss irgendwo (in ähnlicher Form) in deinem Code erscheinen:
CONST view_width = 640 / 32 ' 20 horizontal
CONST view_height = 480 / 32 ' 15 vertikal
DO
IF Bewegung = Rechts THEN
Player.OldX = Player.X: Player.OldY = Player.Y ' sichere alte Position
Player.X += 1 ' Setze ein Feld nach rechts
Allowed = IsMoveAble(Player.X, Player.Y) ' Prüfe ob das Tile begehbar ist...
IF Allowed = 0 THEN ' alles ok
CALL UpdateCam
ELSE
Player.X = Player.OldX
END IF
LOOP UNTIL Ende = 1
SUB UpdateCam () ' Setze nun die Kamera abhängig vom Spieler
' Der Held wird dadurch mittig ausgerichtet:
Camera.X = Player.X - (view_width / 2)
Camera.Y = Player.Y - (view_height / 2)
' Wenn der Held sich allerdings zu weit am Rand befindet, dann scrollt der nicht weiter...
' Korrektur der Kamera:
IF Camera.X < 0 THEN Camera.X = 0
IF Camera.Y < 0 THEN Camera.Y = 0
IF Camera.X + view_width/2 > Map.MaxWidth THEN Camera.X = Camera.X - view_width/2
IF Camera.X + view_width/2 > Map.MaxHeight THEN Camera.Y = Camera.Y - view_height/2
END SUB |
Perfekt ist es nicht, aber die Idee dürfte ich dir damit vermittelt haben. Wenn du es genauer haben, willst dann hab ich hier einen sehr gut dokumentierten Source code da, der sich allerdings auf Pixel*Pixel-Scrolling beschränkt: http://www.freebasic.net/forum/viewtopic.php?t=309 (Du musst bei diesem Source Code bloß die Sache mit dem GOSUB in dem SUB bereinigen...)
In meinem RPG habe ich übrigens auch nun Pixel*Pixel-Scrolling eingebaut. Läuft alles recht gut, auch die Kollision! _________________ +++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|