scrollin auf ner 2D map mit Sprites
Übersicht

![]() |
FreemanBetreff: scrollin auf ner 2D map mit Sprites |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
heut brauch ich wieder hilfe bei meinen unendlich vielen Problemen. hab eben meine 2D map und wenn ich sie scrolle bewegen sich die sprites mit obwohl ich die X/Y Variable der sprites mit der ScrollX/ScrollY subtrahiere. Gibt es hier speziel für sprites andere Wege das Scrolling zu realiesieren? FrEeMaN[/code] |
||
![]() |
Mattis_the_brain |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beweg doch einfach deine Camera. Obwohl du dann sich wieder neue Probleme bekommen wirst^^ | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft Dir das weiter:Code: [AUSKLAPPEN] tempx=sx-(scrollx*32-schiebx)
sx und sy sind die absoluten Koordinaten des Spielers
tempy=sy-(scrolly*32-schieby) scrollx und scrolly sind die Werte wie weit die Map in ganzen Tiles gescrollt ist schiebx / y für die pixelgenaue Verschiebung (Achtung: diese Werte sind negativ, reichen also von -32 bis 0 !) An tempx / y wird dann die Figur hingepinselt. Hoffe das ist soweit verständlich ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke erstma aber ich check das mit dem schiebX/schiebY nich wodurch werden die errechnet?
hier ist mal der Code, das ganze sieht aba so aus das man den sprite immer nur dann sieht wenn wenn die map an der position is an der sie ganz zu anfang is.. Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 SetBuffer BackBuffer() camera = CreateCamera() sprite = LoadSprite("lampe1.bmp") Include "xxx\mapengine.bb" map_load("maps\reizimmer.map") Global layer.layer Global map0.layer Global map1.layer Global map2.layer Global map3.layer For layer = Each layer If layer\name$="map0" Then map0 = layer If layer\name$="map1" Then map1 = layer If layer\name$="map2" Then map2 = layer If layer\name$="map3" Then map3 = layer Next sy# = 0.1 sX# = 0.1 While Not KeyDown(1) CameraClsMode camera,0,1 Cls map_scroll(x,y) PositionEntity sprite,tempX,tempY,8 tempx=sx-(x*32-1) tempy=sy-(y*32-1) layer_map_draw(map0.layer) ms = MilliSecs() frame = frame + 1 If ms - timer > 1000 fps = frame timer = ms frame = 0 EndIf If KeyDown(200) Then y = y - 1 If Keydown(208) Then y = y + 1 If Keydown(203) Then x = x - 1 If Keydown(205) Then x = x + 1 Text 0,0,"sx# :"+x Text 0,15,"sy# :"+y Text 0,30,"fps :"+fps UpdateWorld() RenderWorld() Flip 0 Wend FrEeMaN |
||
- Zuletzt bearbeitet von Freeman am So, Okt 31, 2004 16:38, insgesamt einmal bearbeitet
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die werden beim scrollen der Map solange dekrementiert bis deren Wert kleiner/gleich -32 ist. Wenn dies nun zutrifft weise ich der entsprechenden Variable wieder 0 zu und inkrementiere scrollx oder scrolly, je nachdem. Beim 'Zurückscrollen' das ganze eben umgekehrt. So kann ich dann flüssig scrollen. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Och Leute!
Was hat das denn im 2D-Forum zu suchen? |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach so, ich dachte du arbeitest mit einer 2D Tilemap ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab das Problem selbst gelöst.
Falls es jemanden die Lösung interessiert : ich habe versucht herauszufinden wieviel sich ein sprite +1 nach vorn bewegt und wie viel ein Image. Das hat dann folgendes ergeben : Code: [AUSKLAPPEN] PositionEntity sprite,x#,y#,7 If KeyDown (200) Then y# = y# + 0.08 map0\posy = map0\posy - 4 ; Layerscrolling EndIf If KeyDown (208) Then y# = y# - 0.08 map0\posy = map0\posy +4 EndIf If KeyDown (203) Then x# = x# - 0.08 map0\posx = map0\posx - 4 EndIf If KeyDown (205) Then x# = x# + 0.08 map0\posx = map0\posx + 4 EndIf es lässt sich also festhalten das 1 bewegen beim image das selbe ist wie 0.01 beim sprite . ![]() FrEeMaN |
||
Nox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
...kommt auf die Perspektive und Entfernung der Kamera an. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group