scrollin auf ner 2D map mit Sprites

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Freeman

Betreff: scrollin auf ner 2D map mit Sprites

BeitragSo, Okt 31, 2004 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 31, 2004 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Beweg doch einfach deine Camera. Obwohl du dann sich wieder neue Probleme bekommen wirst^^

Hubsi

BeitragSo, Okt 31, 2004 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft Dir das weiter:Code: [AUSKLAPPEN]
tempx=sx-(scrollx*32-schiebx)
tempy=sy-(scrolly*32-schieby)
sx und sy sind die absoluten Koordinaten des Spielers
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 Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Freeman

BeitragSo, Okt 31, 2004 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 31, 2004 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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...

Kabelbinder

Sieger des WM-Contest 2006

BeitragSo, Okt 31, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Och Leute!
Was hat das denn im 2D-Forum zu suchen?
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Hubsi

BeitragSo, Okt 31, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so, ich dachte du arbeitest mit einer 2D Tilemap Exclamation Dann kannst Du das wieder vergessen was ich geschrieben habe.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Freeman

BeitragDi, Nov 02, 2004 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 . Smile

FrEeMaN
 

Nox

BeitragMi, Nov 03, 2004 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
...kommt auf die Perspektive und Entfernung der Kamera an.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group