Jump'n'run

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

schalli

Betreff: Jump'n'run

BeitragDi, Apr 28, 2009 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Apr 28, 2009 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Viewport???!!!

Is das nich 3D?????!!! Shocked

lg
WIP: Vorx.Engine

ozzi789

BeitragDi, Apr 28, 2009 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Mai 01, 2009 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragFr, Mai 01, 2009 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

schalli

BeitragFr, Mai 01, 2009 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Embarassed
ich hoffe, jetzt bin ich verständlich.

Xeres

Moderator

BeitragFr, Mai 01, 2009 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

schalli

BeitragSo, Mai 03, 2009 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group