Warum bewegt sich meine Figur so schnell?
Übersicht

maviBetreff: Warum bewegt sich meine Figur so schnell? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meine Figur bewegt isch auf meiner Tile Map viel zuschnell! Wie kann ich die geschwindigkeit bremsen?
Ich habe schon verschiedene Werte geändert aber es funktioniert nicht. Hier der Code: Code: [AUSKLAPPEN] Graphics 1024,768,16,0 SetBuffer BackBuffer() ;- Images laden - Global gras = LoadImage("gras.bmp") Global wasser = LoadImage("wasser.bmp") Global hero = LoadImage("held.bmp") MaskImage hero, 255,255,255 ;- Variablen - Global timer = CreateTimer(40) Global karte Global px = 10 Global py = 7 Global move = 1 Global scrollx Global scrolly Global x,y ;- Vorbereitungen laden - Dim map(31,23) karte = OpenFile("map.dat") For y = 0 To 23 For x = 0 To 31 map(x,y) = ReadByte(karte) Next Next ;- Hauptschleife :: BEGIN :: - Repeat drawmap() movement() If move = 1 Then x = px * 32: y = py * 32: DrawImage hero,x-scrollx,y-scrolly: Delay 25 WaitTimer(timer) Flip Cls Until KeyHit(1):End ;- Hauptschleife :: END :: - CloseFile karte ;- Include - Include "func.bb" ;// FUNC.bb
Function drawmap() For y = 0 To 23 For x = 0 To 31 If map(x,y) = 0 Then DrawImage gras,x*32-scrollx,y*32-scrolly EndIf If map(x,y) = 1 Then DrawImage wasser,x*32-scrollx,y*32-scrolly EndIf Next Next End Function Function movement() If KeyDown(208) Then If map(px,py+1) < 1 Then py = py + 1 scrolly = scrolly + 32 move = 1 EndIf EndIf If KeyDown(200) Then If map(px,py-1) < 1 Then py = py - 1 scrolly = scrolly - 32 move = 1 EndIf EndIf If KeyDown(203) Then If map(px-1,py) < 1 Then px = px - 1 scrollx = scrollx - 32 move = 1 EndIf EndIf If KeyDown(205) Then If map(px+1,py) < 1 Then px = px + 1 scrollx = scrollx + 32 move = 1 EndIf EndIf End Function |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir mal WaitTimer![]() Zitat: Dieser Befehl ist besonders für die Grafikausgabe nützlich. Damit kann man die Grafikausgabe auf bestimmte Anzahl Bilder pro Sekunde drosseln.
|
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
am besten ist es die interne Uhr zu benutzten und die Figur nur in bestimmten Intevallen zu bewegen
Code: [AUSKLAPPEN] ;- Hauptschleife :: BEGIN :: -
Repeat drawmap() ;Timer alle 500 millisekunden nur Figur setzen If time% < MilliSecs() Then time = MilliSecs() + 500 movement() End If |
||
[BB2D | BB3D | BB+]
|
mavi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja mhh,
nicht wirklich zufriedenstellen, denn wenn das langsamer geht dann wie soll ich sagen, sieht man das vorherige bild noch :O iwie das ist iwie nicht prickelnd |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für einfache dinge sind die blitzbasic-timer gut,
wenn man was aufwendigeres machen will, und evtl eine art "pseudo-multithreading" realisieren, dann sollte man die von Ralliman genannte methode nutzen. Aber für den Anfang reicht der weg: BlitzBasic: [AUSKLAPPEN] Graphics 800,600 |
||
mavi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mein problem ist das scrolling zubeeinflussen :O wenn ich scrolle und das scrolling verringere wird komischerweise die map kleiner ?!
Okay problem gelöst! danke euch alle! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group