bildschirmkoordinaten verschieben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

MisterKnister

Betreff: bildschirmkoordinaten verschieben

BeitragFr, Sep 05, 2008 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich möchte, dass sich der bildschirm verschiebt, wenn ich mich auch bewege,
also wenn ich nach rechts gehe, folgt mir der bildschirm und ich bleibe(für den betrachter) an der selben stelle
ich weis, dass das etwas mit origin und viewport zu tun hat, habe aber nicht verstanden, wie man diese befehle benutzt, ich habe mir ausserdem das jump&run tut auf der robsite angesehen, fand es aber nicht so toll, immer die tiles mitbewegen zu müssen.


hier also meine frage:


kann ich den bildschirm und den spieler verschieben, ohne die tiles bewegen zu müssen? und wenn ja, wie?

danke schonmal im voraus.
 

feider

ehemals "Decelion"

BeitragFr, Sep 05, 2008 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ohne die tiles zu verschieben: origin.
Dabei musst du aber darauf achten, nicht nur den Player sondern auch das HUD etc an die neuen Koordinaten zu setzen.
Ansonten ist die Verschiebung der Tiles die beste Möglichkeit, und auch die einzige, die sich mir noch aufzeigt...

mfg
Dece
 

da_poller

BeitragFr, Sep 05, 2008 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
du meinst in 2d?

also wie ich das verstanden habe soll der spieler immer in der mitte des bildschrims erscheinen richtig?

nun in dem falle einfach den player mittig des bildschirm zeichnen und von der position aus den mapursprung errechnen udn von da anfangen zu zeichnen..

ich hoffe ich hab mir irgendwie ausgedrückt...
 

MisterKnister

BeitragFr, Sep 05, 2008 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
naja dass das mit origin geht wusste ich auch schon ich hab nur nicht verstanden wie genaus.
 

feider

ehemals "Decelion"

BeitragFr, Sep 05, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
http://t1246.greatnet.de/help/Origin
Wird hier ziemlich genau erklärt.
Versuche erstmal, in einem neuen Dokument mit dem Befehl herumzuspielen, dann wirst du seine funktionsweise schnell verstehen.

mfg
Dece
 

MisterKnister

BeitragFr, Sep 05, 2008 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das hab ich mir auch durchgelesen und hier so eingesetzt um es zu verstehen
Code: [AUSKLAPPEN]

Repeat

If KeyDown(2) Then x = x + 1
Origin x,y

Rect 1,1,1,1
Rect 50,50,50,50

Until KeyHit(1)

nun geht das aber nicht und ich weis nicht warum
 

Fredko

BeitragFr, Sep 05, 2008 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Man sollte eigentlicher immer Setbuffer Backbuffer() mit Flip und Cls benutzen


Code: [AUSKLAPPEN]

Graphics 320,240
SetBuffer BackBuffer()

Repeat
Cls

If KeyDown(2) Then x = x + 1
Origin x,y

Rect 1,1,1,1
Rect 50,50,50,50

Flip
Until KeyHit(1)

Dann klappts auch Smile
!
 

MisterKnister

BeitragFr, Sep 05, 2008 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hups das is mir jetz aber peinlich setbuffer backbuffer() war zwar da, aber ich hab vergessen cls und flip einzustzen(wie schon so oft) Laughing

danke fredkostudio

jetzt habe ich aber das problem, dass sich, wenn ich mich bewege, alles bewegt, wisst ihr warum?

hier der code
Code: [AUSKLAPPEN]

Repeat
WaitTimer timer
Cls


TileImage  hintergrund,0,0
kartemalen

spielerbewegen
spielermalen

Origin spielerx, spielery


Flip
Until KeyHit(1)


Function spielerbewegen();----------------|
   If KeyDown(links) Then                         ;|
   If spielerbild = held1 Then spielerbild = held2 ;|
                               ;|
   laufcounter = laufcounter - 1;--------|
   
      If laufcounter = 0 Then;-----|
      laufcounter = 8 ;------------|
      frmspieler = frmspieler + 1;-|
      EndIf;-----------------------|
      If frmspieler >5 Then frmspieler = 0
      
                                       ;-
      If map((spielerx - 41) /32,(spielery) /32)=0 Then    ;-
      If map((spielerx - 41) /32,(spielery + 40) /32)=0 Then    ;-
      spielerx = spielerx - 3                         ;-
      EndIf;   ----                  ----            --
      EndIf;   ----                  ----            --
        EndIf
      

    If KeyDown(rechts) Then;--------------|
                               ;|
   If spielerbild = held2 Then spielerbild = held1  ;|
                               ;|
   laufcounter = laufcounter - 1;--------|
   
      If laufcounter = 0 Then;-----|
      laufcounter = 8 ;------------|
      frmspieler = frmspieler + 1;-|
      EndIf;-----------------------|
      If frmspieler >5 Then frmspieler = 0
      If map((spielerx + 40) /32,(spielery ) /32)=0 Then
      If map((spielerx + 40) /32,(spielery + 40) /32)=0 Then
      spielerx = spielerx + 3
      EndIf
      EndIf
      EndIf
      
      
      
      If map((spielerx) /40,(spielery + 40) /40)=0 Then
      spielery = spielery + 4
      EndIf

End Function


Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group