[Problem gelöst] pielerberechnung bei Jump'n Run Spiel?
Übersicht

bruce85Betreff: [Problem gelöst] pielerberechnung bei Jump'n Run Spiel? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Abend zusammen,
Ich habe folgendes problem, ich benutze für die Map Tile grösse 50*50 pixel und mein Spieler ist 100*100 Pixel. Wenn ich es jetzt berechnen möchte zum Jumpen, dann fliegt die figur durch die Tiles. Hier mal meine berechnungen zum Jumpen: Code: [AUSKLAPPEN] Function SpielerJump()
If KeyDown(200) Then If jump = False Then jump = True spieler_temp_y = 7 EndIf EndIf If Spielfeld((spieler_x+scroll_x+50)/100,spieler_y/100) > 0 And jump = True Then jump = False spieler_y = spieler_y + 1 EndIf If jump = True Then SpielerSekunde=0 spieler_temp_y = spieler_temp_y -0.15 spieler_y = spieler_y - spieler_temp_y If spieler_temp_y =< 0 Then If Spielfeld((spieler_x+scroll_x+50)/100,(spieler_y+50)/100) > 0 Then jump = 0 temp = spieler_y / 100 spieler_y = temp * 100 EndIf EndIf EndIf If jump = False Then If Spielfeld((spieler_x+scroll_x+50)/100,(spieler_y+100)/100) = 0 Then jump = True spieler_temp_y = 0 EndIf EndIf End Function wisst ihr vieleicht wie ich eine genaue berechnung hinbekomme? Ich wäre euch sehr dankbar für die hilfe. Edit: könnt ihr mir vll nur diese berechnung hier erklären? Code: [AUSKLAPPEN] map((spieler_x+32) /32,(spieler_y+16) /32)
also irgendwie verstehe ich das noch net so richtig. Ich glaube +32 also die breite des spielers /32 weil die Tiles 32*32 Pixel gross sind und für y +16 um die Mitte des Spielers zu bestimmen / 32 weil die Tiles 32*32 Pixel gross sind. Ist das so richtig? Oder ist das bei spieler_y+16 für die Tiles um die Mitte zu bestimmen, oder für den Spieler? Vielen Dank schonmal. MFG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
- Zuletzt bearbeitet von bruce85 am Mo, Nov 20, 2006 16:43, insgesamt einmal bearbeitet
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist am einfachsten zu verstehen wenn man das ganze mal trocken rechnet. Nehmen wir an Du hast folgnede Werte in dem Array:
Code: [AUSKLAPPEN] 123
405 678 Auf der 0 steht dann der Spieler (also bei x=32 und y=32), die Tiles sowie der Spieler sind 32*32 Pixel groß. Und jetzt rechnen wir den Zahlenhaufen um: Code: [AUSKLAPPEN] tilenummer_rechts = map((spieler_x+32) /32,(spieler_y+16) /32) tilenummer_rechts = map(( 32 +32) /32,( 32 +16) /32) tilenummer_rechts = map( 64 /32, 48 /32) tilenummer_rechts = map( 2 , 1 ) ; 1 deshalb, weil Blitz aus dem 1.5 einen Integer macht tilenummer_rechts = 5 Wenn jetzt das Tile Nr. 5 ein Felsbrocken ist kann der Spieler nach rechts nicht weiterlaufen oder ist Bergsteiger ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke dir,
aber wie tu ich das jetzt anwenden? Ich muss das jetzt irgendwie in einer Funktion packen, aber wie? |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Müssen nicht, Du kannst wenn Du besser damit klarkommst. Empfehlenswert wäre es aber sich von vornherein Gedanken zu machen wie man die Tiles aufteilen möchte (also wegen meiner ist der Bereich von 1 bis 250 begehbar, 251 bis 500 nicht, usw.) oder ob man vielleicht mit Layern arbeiten will (Erster Layer ist Boden, zweiter Layer Kollision, dritter Layer Dinge zum aufsammeln oder besondere Aktionen). Wie Du das schlussendlich anwendest liegt also bei Dir ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke dir, also die berechnung ist eigentlich kein problem für mich wenn ich ein Player mache der gleich gross wie die Tiles sind, ich versteh nur nicht wie ich den Player richtig berechne, weil der Player größer ist als die Tiles.
Die Tiles sind 50*50 Pixel gross und der Player 100*100 Pixel. Jetzt weiss ich nicht genau wie ich das hier umrechne das der Player perfect also genaue Pixel kollidiert: Code: [AUSKLAPPEN] If KeyDown(205) Then
If Spielfeld((spieler_x+50)/50,(spieler_y+25)/50) = 0 Then spieler_x = spieler_x + 2 EndIf EndIf kannst du mir das vieleicht mal erklären wie ich das jetzt mache? Danke dir schonmal. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dazu kann ich nur anmerken dass Du vielleicht dein Tilesystem überdenken solltest.
Wenn Dein Player per Se 4 Tiles bedeckt, warum hältst Du an dieser Tilegröße fest ? |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
If Spielfeld((spieler_x+100)/50,(spieler_y+25)/50) And Spielfeld((spieler_x+100)/50,(spieler_y+75)/50)
Du solltest das ganze erstmal wirklich verstanden haben, sonst kommt der Frust von ganz alleine ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das geht irgendwie nicht, egal ich werds mal selbst versuchen.
Danke dir trotzdem. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo nochmal,
also ich versuche schon seit stunden eine Richtige killision mit den Tiles hinzubekommen. Kann mir vll einer nur diesen Code hier erklären? Code: [AUSKLAPPEN] If Spielfeld((spieler_x+100)/50,(spieler_y+25)/50) = 0 And Spielfeld((spieler_x+100)/50,(spieler_y+75)/50) = 0 Then
also wenn spieler_x 100 pixel nach rechts /50 frei ist dann wird das ja ausgeführt, oder? wenn ich diesen code umschreibe das der Spieler runterfällt bis es kollidiert, dann ist mein Spieler in der Hälfte der Tile drauf, ich kriegs einfach nicht hin ![]() Gibt es vieleicht noch Tutorials zu Jump`n Run Spiel im Netz auser Robsite.de? Edit: @Hubsi des is so, ich lade die Tiles mit 50*50 Pixel und wenn ich ein Spieler mit 50*50 Pixel nehme, das ist viel zu klein für mein Spieler. Also nur die Tiles sind 50*50 Pixel und der Spieler 100*100 Pixel. Edit: @BladeRunner ich weiss das es 4 Tile grösse bedeckt, der Player ist eigentlich bissel kleiner und schmaler, also um 25 pixel sozusagen, nur die Frame grösse für jedes bild ist 100*100 gross. Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab das Problem selber gelöst, also ich habe die Spielfigur um 50*50 Pixel kleiner gemacht jetzt ist der Spieler 50*50 Pixel gross und jetzt funktioniert die kollision sehr gut.
Und danke für die Antworten ![]() MFG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group