Seite 1 von 1
Suche Tutorial wie man Schrägen hochläuft
Verfasst: 14.07.2005 21:31
von andre x
Hallo
Ich habe neulich mal ein englisches Tut gesehen wie man Sprites dazu bringt Schrägen, bzw. Hügel hochzulaufen. Gefunden hab ich den Link in diesem Forum (oder war's im Dark- oder Blitz Basic Forum - ich habs vergessen)
Hab mir schon Blasen an den Fingern gesucht.
Weis vielleicht jemand welches Tutorial ich meine und vor allen, wie der s****ß link ist??
THX
Verfasst: 14.07.2005 21:37
von benpicco
Wie schräg?
Meinst du sowas?
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(1024,768,16,"schräg")
CreateSprite(1,10,10)
StartDrawing(SpriteOutput(1))
Box(0,0,10,10,RGB(0,0,255))
StopDrawing()
x=1
y=1
Repeat
ClearScreen(10,10,10)
DisplaySprite(1,x,y)
x+1
y+1
FlipBuffers()
ExamineKeyboard()
Until y>768 Or KeyboardPushed(#PB_Key_Escape)
End
Schon auf der Robsite geschaut?
Verfasst: 14.07.2005 21:46
von Green Snake
ich denke er meint was anderes.
er will glaube ich, dass die sprites gezommt werden, so dass es aus sieht, als ob das sprite über einen hügel läuft...is schwer zu erklären, aber auf der ex purebasic lounge gabs mal ein thema dazu

.
Verfasst: 14.07.2005 22:02
von andre x
Hi

Ist ja n schnelle Antwort
Also ich meine das so:
In dem erwähnten Tut ging es nicht um PureBasic Code, sondern mehr theoretisch wie sich die Sprites auf den Tiles verhalten.
Verfasst: 14.07.2005 22:05
von benpicco
Ah, dass müsste mit SpritePixelcollision gehen, und ausweichen in die Richtung, in der keine collision ist (nach oben oder unten bei konstanter Vorwärtsbewegung)
Verfasst: 14.07.2005 22:10
von Ynnus
Ich versuche das mal zu beschreiben, wie ich es machen würde:
Lass die Spielfigur immer auf den Höchsten Punkt des Bodens anzeigen. Wenn die Höhe des Bodens sich ändert, etwa wegen einem Hügel, dann lass das Sprite auch "mitwachsen" und am höchsten Punkt anzeigen. Damit kann die Figur dann auch Berge erklimmen.
Bei senkrechten oder nahezu senkrechten Mauern musst du allerdings schauen, dass du da nicht auch hochlaufen kannst. Also musst du die Position vorher und nach der Bewegung vergleichen, ob sie großer eine gewisse Anzhal Pixel ist. Wenn der Höhenunterschied zu groß ist, weil eine Mauer oder Wand kommt und der Spieler plötzlich einen riesigen Sprung machen würde, lass die Figur wieder auf die ursprüngliche Position zurückkehren, vor der Bewegung, was ein Stop der Spielfigur bedeutet. (Die Figur bleibt dann vor der Mauer stehen).
Ist der Abstand in kleinem Ausmaß, lass die Figur dort stehen. Das bewirkt ein Hochlaufen an einer Schrägseite.
(Dies geschieht alles innerhalb der Schleife VOR dem Anzeigen der geänderten Position, dadurch sieht man garnicht, dass der Spieler kurzzeitig auf der Wand war und wieder zurückgesetzt wurde).
Verfasst: 15.07.2005 14:26
von benpicco
Wäre soetwas nicht auch eine Lösungsmöglichkeit, oder ist das zu langsam?
Code: Alles auswählen
InitSprite()
InitKeyboard()
Global playerX.f
Global playery.f
#g=9.84
height=3
playerX=500
OpenScreen(1024,768,16,"schräg")
CreateSprite(1,10,10)
StartDrawing(SpriteOutput(1))
Box(0,0,10,10,RGB(0,0,255))
StopDrawing()
CreateSprite(0,1024,768)
StartDrawing(SpriteOutput(0))
LineXY(100,768,1024,0,RGB(255,0,0))
DrawingMode(4)
Box(600,200,100,300,RGB(255,0,0))
FillArea(200,700,RGB(255,0,0),RGB(0,255,0))
StopDrawing()
Repeat
ClearScreen(10,10,10)
DisplayTransparentSprite(0,0,0)
DisplaySprite(1,playerX,playery)
FlipBuffers()
ExamineKeyboard()
If SpritePixelCollision(1,playerX,playery+speedy,0,0,0)=0
speedy=#g/2*Pow(t,2)
playery+speedy
t+1
Else
t=0
speedy=2
EndIf
If SpritePixelCollision(1,playerX,playery,0,0,0)
Repeat
playery-1
Until SpritePixelCollision(1,playerX,playery,0,0,0)=0
speedy=2
EndIf
MoveX=0
If KeyboardPushed(#PB_Key_Right)
MoveX+1
ElseIf KeyboardPushed(#PB_Key_Left)
MoveX-1
EndIf
If SpritePixelCollision(1,playerX+MoveX,playery-height,0,0,0)=0
playerX+MoveX
EndIf
Until KeyboardPushed(#PB_Key_Escape)
End
Verfasst: 15.07.2005 16:36
von Batze
Mir wärs zu langsam!
Aber was besseres fällt mir jetzt auch nicht ein.
.
Verfasst: 21.07.2005 16:14
von andre x