Player hüpft nicht
Übersicht

![]() |
Der EisvogelBetreff: Player hüpft nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
mein Problem ist, dass der Player nur springt wenn er auf dem Boden steht. Wenn er aber auf einem Tile steht, springt er nicht mehr. ![]() Wieso? Code: [AUSKLAPPEN] Graphics 640,480,32,2
Global Player=LoadImage ("player.png") MaskImage Player, 255, 0, 255 Global tile = LoadImage ("tile.png") MaskImage tile, 255, 0, 255 Dim map1(20,15) Restore mapdata For y=0 To 14 For x=0 To 19 Read map1(x,y) Next Next Global level1=1 Global Player_pos_x = 0 Global Player_pos_y = 0 Global Player_temp_y# = 0 Global jump Global jumptimer# Repeat Cls For y = 0 To 14 For x = 0 To 19 If map1(x,y) = 1 Then DrawImage tile, x*32, y*32 EndIf Next Next DrawImage Player, player_pos_x,player_pos_y moveplayer() playerjump() Flip Until KeyHit(1) End Function moveplayer() If KeyDown(203) Then If map1(Player_pos_x /32,(Player_pos_y +16) /32)=0 Then Player_pos_x = Player_pos_x -4 If Player_pos_x =< 0 Then Player_pos_x = 1 EndIf ElseIf KeyDown(205) Then If map1((Player_pos_x +32) /32,(Player_pos_y +16) /32)=0 Then Player_pos_x = Player_pos_x +4 If Player_pos_x => 608 Then Player_pos_x = 607 EndIf EndIf End Function Function playerjump() If KeyDown (57) Then If jump = False jump = True Player_temp_y = 30 EndIf EndIf If map1((Player_pos_x +24) /32,(Player_pos_y+15) /32)=1 And jump = True Then jump = False Player_pos_y = Player_pos_y +1 EndIf If jump = True Then Player_temp_y = Player_temp_y -0.33 Player_pos_y = Player_pos_y - Player_temp_y If Player_temp_y =< 0 Then If map1((Player_pos_x+4) /32,(Player_pos_y +96) /32)=1 Then jump = 0 temp = Player_pos_y /32 Player_pos_y = temp *32 EndIf If map1((Player_pos_x +26) /32,(Player_pos_y +96) /32)=1 Then jump = 0 temp = Player_pos_y /32 Player_pos_y = temp *32 EndIf If map1((Player_pos_x +47) /32,(Player_pos_y +96) /32)=1 Then jump = 0 temp = Player_pos_y /32 Player_pos_y = temp *32 EndIf EndIf EndIf If jump = False Then If map1((Player_pos_x +24) /32,(Player_pos_y +32) /32)=0 Then jump = True Player_temp_y = 0 EndIf EndIf If Player_pos_y =< -15 Then Player_pos_y = -14 jump = True Player_Temp_y = 0 EndIf If Player_pos_y => 386 Then Player_pos_y = 385 jump = False EndIf End Function .mapdata Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Ich muss das unbedingt wissen. |
||
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, ich kann dir jetzt nicht genau sagen, wo der Fehler ist. Aber: Ist dir schon mal aufgefallen, dass "player_temp_y" immer zwischen 0 und -0.33 hin und her schwankt, wenn der spieler ganz unten auf dem Boden ist? Außerdem solltest du vielleicht nur die Sprung-Funktion schicken, dann würde dir vielleicht auch jemand anderes antworten, wenn nicht so viel Code hier ist.
Nur als Anregung: "player_temp_y" wird ja immer -0.33, wenn jump=True ist. Das kann es aber nicht sein, denn wenn jump=True ist, ist player_temp_y ja 30. Also musst du woanders player_temp_y = player_temp_y - 0.33 stehen haben. Ich weiß nicht genau wo dein Fehler ist, aber vielleicht hast du ja programmiert, dass wenn y größer als irgendetwas ist, dass dann immer etwas von y abgezogen wird, bzw. dass dann jump nicht True sein kann. Mach es doch am besten übersichtlicher oder probier eine andere Sprungfunktion. MFG Lador |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich mache das immer so (bei Jump'n'run) :
Code: [AUSKLAPPEN] ;Die TileSets :
For xx = 0 To 31 For yy = 0 To 23 DrawImage TileSet,xx*25,yy*25,map(xx,yy) If map(xx,yy) > 0 If RectsOverlap(p_x(1)-10,p_y(1)-12,20,1,xx*25,yy*25,25,25) Then fy = 0:p_y(ID) = oy If RectsOverlap(p_x(1)-10,p_y(1)+12,20,1,xx*25,yy*25,25,25) Then Jump = 0:fy = 0:p_y(ID) = oy If RectsOverlap(p_x(1)-12,p_y(1)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox If RectsOverlap(p_x(1)+12,p_y(1)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox EndIf Next Next Code: [AUSKLAPPEN] ;mit dem Sprung :
p_oy = p_y:p_ox = p_y If KeyHit(17) And Jump < 2 Then Jump = Jump + 1:fy = 13 If Jump > 0 Then fy = fy - 0.9 p_y = p_y - fy Else fy = fy + 0.9 p_y = p_y + fy EndIf mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group