colli auf einer dim-map?
Übersicht

![]() |
RalffBetreff: colli auf einer dim-map? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
ich progge gerade mein jump'n run spiel und bin noch nicht sehr weit. ich habe eine map mit einem dim feld erstellt und jetzt will ich eine collisionsabfrage machen die abfragt ob der spieler mit einem bestimmten tile der map (zb. einem felsen) collidiert. kennt irgendjemand ein tut über dieses thema. oder kann mir jemand helfen? wäre sehr dankbar. mfg Ralff |
||
![]() |
Flori-D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Haste Rm´´s Buch?Da steht sowas drinn.Schau da mal nach fals dus hast. | ||
BB is Macht!
Homepage: www.flori-d.de |
![]() |
Ralff |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein leider habe ich das buch nicht.
aber darüber muss es doch ein tut oder so was geben |
||
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso muss es gliech ein Jump'n Run sein??????????????????????????????
Wenn du den Umgang mit Dim noch nicht beherrschst, dann macht es keinen Sinn ein Jump'n Run zu beginnen... Wo gibt es ein Tutorial: Wer faul ist, den bestraft das Leben! Wozu gibt es Google, Lycos und co??? Ist ja nicht böse gemeint, aber du bist keinesfalls der Erste mit dieser Einstellung... |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz einfach. Du ordnest jedem Tile eine Nummer zu.Z.b 1 -100 sind Tiles durch die du durchgehen kannst. 1- 200 sind feste Tiles. Wenn du dich nach links bewegt, und die Nummer des Tiles links von dir ist größer als 200, dann bleit der SPieler stehen | ||
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wen du ein gutes tut. haben willst dann kann ich dir nur eins raten, Jump&Run 1 und 2.
Die bekommst du auf www.robsite.de. Aber ich würe mich vorher mit types beschäftigen. Weil die kommen darin vor und wen du die nicht verstehst, dann kannst du dat tut gleich in die Tonne kloppen! (Ein tut für types ist bei der blitzbase hilfe dabei) |
||
Deutscher Blitz Basic Chat |
![]() |
joachim_neu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Seoman hat Folgendes geschrieben: Wieso muss es gliech ein Jump'n Run sein??????????????????????????????
Wenn du den Umgang mit Dim noch nicht beherrschst, dann macht es keinen Sinn ein Jump'n Run zu beginnen... wer sagt, dass er dims nicht beherrscht? das hat er nie geschrieben! er will nur wissen, wie er es schaft, dass einige tiles "durchhüpfbar" sind oder nicht... also ich würde jedem tile eine nummer zurodnen und dann das dim 3D machen, etwa so: Code: [AUSKLAPPEN] dim tile(anzahl der X-tiles,anzahl der Y-tiles,1) 1 weil dann 0 die tilenummer und 1 speichern kann, ob es begehbar ist, also 1 oder 0. du musst dann nur bei einem sprung oder fall oder einer bewegung feststellen, ob das tile, das in der richtung in der bewegt wird ist, begehbar ist... bei sprung: (X = spielerX; Y = spielerY) Code: [AUSKLAPPEN] if tile(X,Y-1,1) = 1 then springe nun ja, ich hoffe, ich habe dir geholfen... mfg JOACHIM NEU |
||
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de |
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
joachim_neu hat Folgendes geschrieben: wer sagt, dass er dims nicht beherrscht? das hat er nie geschrieben! er will nur wissen, wie er es schaft, dass einige tiles "durchhüpfbar" sind oder nicht...
Aber Dim zu beherrschen setzt doch vorraus, dass man auch eine Killisionsabfrage hinkriegt... Aber spielt auch keine Rolle, wir brauchen hier kein OT! OT = Off Topic! |
||
- Zuletzt bearbeitet von Seoman am Mo, Jul 19, 2004 22:00, insgesamt einmal bearbeitet
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
OT? | ||
Deutscher Blitz Basic Chat |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit der Methode bin ich bisher am besten gefahren:
Code: [AUSKLAPPEN] oben=map((sx+16)/32,(sy-2)/32) ; Oben
Das ganze geht von einer Tilegröße von 32*32 Pixel und einer Spielfigurgröße von 32*32 Pixel aus. Als Ergebnis bekommt man die Nummer des Tiles das sich rund um oder direkt auf dem Spieler befindet. Dann kannst Du prüfen ob die Nummer z.B. kleiner 201 -> stehenbleiben, größer 200 -> weiterlaufen. Ist sie größer 400 -> Powerup usw...
rechts=map((sx+32)/32,(sy+16)/32) ; Rechts unten=map((sx+16)/32,(sy+32)/32) ; Unten links=map(sx/32,(sy+16)/32) ; Links mitte=map((sx+16)/32,(sy+16)/32) ; Mitte ; Damit das Männicken dann nach einem Sprung oder dergleichen ; nicht mitten im Tile steht: tempy=sy/32 sy=tempy*32 Und sei nicht kleinlich bei den Tilenummern (also z.B. "Ich spar Speicher, bis 50 sind feste, 51-100 nicht zu durchlaufen..."). Mir ist es nämlich bei meinem ersten Jumpn Run genauso gegangen und es ist eine fiese Arbeit das nachträglich zu erweitern ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Ralff |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
ich hab das so auch schon ausprobiert aber es hat nicht funktioniert. ich kann eigentlich ganz gut mit dim-feldern umgehen. bloß ich habe noch nie eine collision darauf gebraucht. hier ist ein teil der funktion movehero() zum linkslaufen aber es funktioniert nicht Code: [AUSKLAPPEN] If KeyDown(205) Then
If map ((p_p_x+32)/32,(p_p_y+16)/32)<3 Then scroll=scroll+4 Else scroll=scroll-4 EndIf EndIf ist in dem code ein fehler? mfg Ralff |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also Für Plattformspiele verwende ich Hautsächlich die gleiche Methode, wie hubsi, die hat nur den Nachteil, dass sie nur aussasgen kann auf einem Tile ein einzelner Punkt ist.
Aber wenn das nicht funktioniert, muss der Fehler woanders liegen. Es kommt natürlich auch darauf an, wie groß das Bild deines Heros ist und ob du genommen hast Midhandle hast. |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Seoman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast zwei If-Schleifen ineinander! Was fragt die obere der beiden ab?? | ||
![]() |
Ralff |
![]() Antworten mit Zitat ![]() |
---|---|---|
die obere fragt ab ob die nach rechts taste gedrückt wird und die untere das mit dem tile.
habt ihr in dem code einen fehler gesehen. das programm läuft zwar aber ich kann trotzdem durch die tiles laufen. |
||
![]() |
Ralff |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
weil es immernoch nicht funktioniert poste ich jetzt mal die ganze function. Code: [AUSKLAPPEN] Function movehero() If KeyDown(205) Then If map ((p_p_x+32)/32,(p_p_y+16)/32)<3 Then scroll=scroll+4 EndIf EndIf If KeyDown (203) Then If map(Player_pos_x /32,(Player_pos_y +16) /32)<3 Then scroll=scroll-4 EndIf EndIf If KeyDown(200) Then If map((Player_pos_x +16) /32,Player_pos_y /32)<3 Then p_p_y = p_p_y-4 EndIf EndIf If KeyDown(208) Then If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)<3 Then p_p_y = p_p_y+4 EndIf EndIf End Function kann mir jemand sagen warum das nicht funtioniert. mfg Ralff |
||
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Ralff
Bist du sicher, dass deine Tiles 32x32 Pixel groß sind? |
||
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Hubsi
Du hast da einen Fehler drin: Code: [AUSKLAPPEN] oben=map((sx+16)/32,(sy-32)/32) ; Oben Da hattest du eine 3 vergessen! |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, das stimmt schon so. Sonst gibt er bei der kleinsten nach-oben Bewegung (Sprung z.B.) das über dem oben liegenden Tile zurück. Schwer zu erklären, darum Illustration: ![]() ![]() Die blauen Blöcke sind die Tiles. Das rote Männicken setzt gerade zum Sprung an, kommt aber nicht weit, weil die Kollierkennung nicht ordentlich funzt ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, stimmt ![]() Dann nehme ich alles zurück. PS: Schöne Zeichnung ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gell, ich bin eben doch Künstler ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group