Jump'n'run
Übersicht
BlitzBasic
Allgemein
schalliBetreff: Jump'n'run |
Antworten mit Zitat |
|
|---|---|---|
|
Ich weiß, diese Frage wurde schon oft gestellt, aber bei mir funktionieren alle Lösungen nicht.
Code: [AUSKLAPPEN] mx = MouseX()
my = MouseY() SetFont f4 Text 40,yplus-30, "ESC: Beenden, F1: Zurück zum Hauptmenü" Viewport xplus,yplus,24*tsize,18*tsize For xxx = start_1 To start_1+23 For yyy = 0 To 17 DrawBlock tiles(map(xxx,yyy)),xxx*tsize+xplus-(start_1*tsize),yyy*tsize+yplus ; Kollision :-( Next Next For xxx = start_1 To start_1+23 For yyy = 0 To 17 For Objekt.TObjekt = Each TObjekt If Objekt\x = xxx And Objekt\y = yyy Then DrawImage obje(Objekt\id),xxx*tsize+xplus-(start_1*tsize),yyy*tsize+yplus Next Next Next If links=0 And KeyDown(203) Then fx = fx - 5 If rechts=0 And KeyDown(205) Then fx = fx + 5 If oben=0 And unten>0 And KeyHit(57) Then Jump = 1 If jump=1 Then speed_y# = speed_y# - 0.8 : jump = 0 EndIf If unten=0 Then speed_y# = speed_y# + 0.3 Else speed_y# = 0 DrawImage figur,fx,fy Viewport 0,0,800,600 fx = fx + speed_x# fy = fy + speed_y# If KeyDown(59) Then mode=0 Ich will die Werte oben,unten,rechts,links mit dem Wert des entsprechenden Tiles füllen. Das funktionierte aber bei den Lösungen, die ich bisher ausprobiert hab, nicht so richtig. |
||
|
|
ComNik |
Antworten mit Zitat |
|---|---|---|
|
Viewport???!!!
Is das nich 3D?????!!! lg |
||
| WIP: Vorx.Engine | ||
|
|
ozzi789 |
Antworten mit Zitat |
|---|---|---|
Viewport
Nein ist es nicht!!11!!!111einz @topic werde nicht ganz schlau aus deiner Erläuterung |
||
|
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
||
schalli |
Antworten mit Zitat |
|
|---|---|---|
|
Also, ich hab eine Figur und will von der die Kollision prüfen.
Jetzt will ich ich wissen welche "TileID" die Tiles oben, unten, usw. haben. Wenn diese ID nicht 0 ist, dann ist das Tile fest. Meine Frage: Wie kann ich erst mal die Position auf der Map von dem benachbarten Tiles herausfinden? Die TileID ist dann ja einfach: map(xxx,yyy). Oder: Ist eine andere Methode besser? (Das glaube ich nämlich.) Und: Wie mache die Kollisionen bei den Objekten? Anmerkung: Das ist der Teil in dem Code von meinem ersten Beitrag für die Kollision: Code: [AUSKLAPPEN] For xxx = start_1 To start_1+23
For yyy = 0 To 17 DrawBlock tiles(map(xxx,yyy)),xxx*tsize+xplus-(start_1*tsize),yyy*tsize+yplus ; Kollision :-( Next Next Hier der Teil mit den Objekten: Code: [AUSKLAPPEN] For xxx = start_1 To start_1+23
For yyy = 0 To 17 For Objekt.TObjekt = Each TObjekt If Objekt\x = xxx And Objekt\y = yyy Then DrawImage obje(Objekt\id),xxx*tsize+xplus-(start_1*tsize),yyy*tsize+yplus Next Next Next |
||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
|
Benachbarte Tiles:
Code: [AUSKLAPPEN] Rechts = map(xxx + 1, yyy)
Unten = map(xxx, yyy + 1) Objekt auf Tileposition X, Y: Code: [AUSKLAPPEN] For Objekt.TObjekt = Each TObjekt
If Objekt\x = X And Objekt\y = Y Then Exit Next ;* Objekt enthält nun das Objekt an der Position oder NULL |
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
schalli |
Antworten mit Zitat |
|
|---|---|---|
|
Ich hab mich richtig mies ausgedrückt.
Ich habe eine Figur (Image figur) mit position fx,fy und größe 40x60. Es wurde mit MaskImage bearbeitet. (-> ImagesCollide?) Von dieser Figur will ich die Kollision zu A. Tiles B. Objekten prüfen und ich hab keine Ahnung wie das geht. Ich hab mein Problem aber echt schlecht beschrieben. ich hoffe, jetzt bin ich verständlich. |
||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
Imagescollide wäre eine Möglichkeit, aber nicht unbedingt die sinnvollste. Deine Figur nimmt immer eine eindeutige Position ein, also würde es reichen die umgebenen Tiles zu überprüfen um eine Reaktion aus zu lösen. WENN das rechte Feld begehbar ist, DANN darf sich der Spieler auch in diese Richtung bewegen. WENN sich der Spieler auf einem Feld mit einem Teleporter-Objekt befindet, DANN... sowas in der Art.
|
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
schalli |
Antworten mit Zitat |
|
|---|---|---|
|
Danke, ich hab mir jetzt was nettes gemacht (so wie Xeres gesagt hat)
Code: [AUSKLAPPEN] If map(xxx,yyy)>0 Then
tx = xxx*tsize+xplus-(start_1*tsize) : ty = yyy*tsize+yplus If fx+30=tx Then If fy>ty-60 And fy<ty+20 Then rechts = 1 EndIf EndIf If fx-20=tx Then If fy>ty-60 And fy<ty+20 Then links = 1 EndIf EndIf If fy+60=ty Then If fx>tx-30 And fx<tx+20 Then unten=1 EndIf EndIf If fy=ty+20 Then If fx>tx-30 And fx<tx+20 Then oben=1 EndIf EndIf EndIf |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group

