Sidescrolling Game
Übersicht

MannerBetreff: Sidescrolling Game |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey leute,
Ich würde gerne bei meinem Jump'n'run das man wenn man in die nähe des randes kommt sich das bild weiter aufbaut. Ich hab mir dazu einiges zu TileImages angeguckt aber nicht wirklich verstnaden. Gibt es andere wege das zu tun oder muss es über TileImage sein? UNd wenn ja wie genau geht das? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tiles sind natürlich die einfachste Methode um eine Karte auf zu bauen...
Im Prinzip addiert man nur einen Wert zu den Bild-Koordinaten, damit es so aussieht, als ob man sich bewegt. Wesentlich einfacher geht es nicht mehr. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok also nehmen wir mal an ich habe ne Map die ist 2048 * 1500 Groß und jeder Tile ist 1024 * 768 groß. Und ich will das mein spieler unten links spawn wie mach ich das denn? Ich weiß die frage ist sehr weitgreifend aber vielleicht gibts ja ne lösung ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1024 * 768... pro Tile? Ich würd eher 32*32 oder sowas nehmen. Wenn ein Tile den Bildschirm füllt, geht des Sinn des ganzen so ziemlich verloren. Es ist möglich, aber normalerweise positioniert man den Spieler an einer Stelle in dem Gitter...
Hast du dir Rob's RPG Tutorials schon mal angesehen? Da werden die Grundlagen erklärt. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So weitgreifend ist es nicht, es ist eigentlich einfachste Mathematik.
Du brauchst zwei Variablen CamX und CamY, die speichern die Koordinaten der linken oberen Ecke des Bildschirms (also das was du siehst). Wenn du nun ganz links unten anfangen willst, ist deine CamX = 0 und deine CamY ist eben das Maximum (MapHoehe-BildschirmHoehe). Versteh nicht ganz wo da dein Problem liegen soll?? Wo wir schon bei deinem Massenbeispiel sind: Sieh zu, dass du nur immer das zeichnen lässt, was du auch auf dem Bildschirm siehst. Außerdem denke ich nicht, dass ein Tile 1024x768 groß ist, schon gar nicht wenn die Map aus 2048x1500 Tiles besteht... MFG Lador |
||
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran" Screenshot | Worklog Fortschritt: ca. 70% |
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja die 1500 hab ich nen bischen gerunded. Also msollte ich die tiles kleiner machen.
Und das tutorial werd ich mir bei gelegenheit dann mal durchlesen ![]() |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, eine feste definition der Tile-größen gibt es nicht. Aber es wiederspricht der eigentlich logik von Tiled-Maps, wenn eins davon ein Bildschirm füllt.
Es wäre recht öde, wenn du ein solches 'Tile' wiederholt zeichnen würdest - und für jedes Bild ein eigenes Unikat schaffen, hebelt die logik auf. Tiled maps sind zb kleine bäume in 3-4 "Tiles" -> quadrate aufgeteilt. Dazu dann noch 2 blöcke die erde zeigen, 2 die Gras / Gras+Erde zeigen. Nun kannst du aus den kleinen puzzelteilchen mehrere Universelle landschaften erstellen, obwohl du eigentlich nur ~10 tiles benutzt. Denk hier zb mal an Super Mario, Pokemon, Zelda für Gameboy, und und und.. Nun zum eigentlichen problem: Am besten hälst du dir die mapdaten in einer art array (oder Mapdata? Ka wie das in BB ist =D). Für jeden wert zeichnest du ein tile. Sollte sich dein Spieler bewegen, und somit die cam, verschiebst du den bereich den du zeichnest. Aber ich denke, das haben meine vorposter bereits angerissen ![]() |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest eine Variable um den X-Wert den der Spieler geht, erhöhen. Anschließend musst du von der X-Koordinate des Bildes diese dann nurnoch abziehen:
BlitzBasic: [AUSKLAPPEN]
|
||
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok danke für das beispiel ![]() Aber wenn ich das mach komm ich in die mitte des bildes, ich möchte aber das wenn man starte mein charakter zentriert ist. Wie ist das möglich? |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
In dem du sagst das PlayerX=GraphycX()/2 ist
Wenn ich das jetzt richtig verstanden hab ![]() oder meinst du: 1. die Map soll erst Scrollen, wenn der Spieler die Mitte erreicht? 2. der Spieler ist irgendwo auf der Map und die Scrollvariablen sollen so berechnet werden, dass der Player in der Mitte ist und die Map korrekt angezeigt wird? |
||
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das 2. ist das was ich mein ![]() |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
In die Hauptschleife:
BlitzBasic: [AUSKLAPPEN]
|
||
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich verzweifel grade.... die x coordinate ist zwar richtig also man ist mit der camera ungefähr da wo der spieler ist aber die y coordinate stimmt nicht... man ist über dem spieler und kann ihn nicht sehen.
Woran liegt das? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht sollte man hier auf HandleImage![]() ![]() Womöglich musst du also noch die Breite/Höhe des Spielerbildes mit einbeziehen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schick doch mal den Code her ![]() Mal gucken Edit: Vlt. hast du vergessen das Bild minus die Scr_Y Variable zu zeichnen |
||
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok hab es doch nach einigem probieren hinbekommen das die camera da starte wo ich will...
aber jetz seh ich meinen spieler nich mehr!!! Ich versthe das nich^^ ich lös nen problem und es kommt nen neues xD Vorschläge? |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass dir mal alle Koordinaten über Debuglog ausgeben, dann weist du wenigstens wo er is
Vlt. sind die Spielerkoordinaten kleiner als die Scrollvariablen dann wird der Spieler auserhalb des Bildes gezeichnet zumindest wenn du den Spieler an seiner Position, minus den Scr_Vars zeichnest Ich werd mal ein funktionierendes Beispiel schreiben Edit: Ich weis jetz warum. Falls du meinem Code benutz hast: Hab 4 Zeilen vergessen ![]() Egal ich hab das (funktionierende) Beispiel fertig (allerdings ein bissle anders, damit es kürzer ist) hiers der Link: http://dl.dropbox.com/u/48089972/Scrolling.bb Schaus die mal an vlt. hilft dir das ![]() |
||
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich würde einfach erst den Hintergrund vor dem Spieler malen :
Code: [AUSKLAPPEN] DrawImage Hintergrund,HintergrundX,0
DrawImage Spieler,SpielerX,SpielerY und dann den Hintergrund bewegen sobald der Spieler an den Rand kommt : Code: [AUSKLAPPEN] If SpielerX>Rand Then
SpielerX-SpielerGeschwindigkeit ;Spieler läuft auf der Stelle Hintergrund-SpielerGeschwindigkeit ;Hintergrund scrollt nach links weg es sieht aus als ob der Spieler sich trotzdem bewegt. EndIf |
||
Manner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Egal ich hab das (funktionierende) Beispiel fertig (allerdings ein bissle anders, damit es kürzer ist) hiers der Link: http://dl.dropbox.com/u/48089972/Scrolling.bb ohhh ja vielen vielen dank!!! genau das war es ![]() |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kein Problem ![]() Wenn du weiter Hilfe brauchst helf ich dir gern ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group