Beste Möglichkeite um ein Objekt zu stoppen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Beste Möglichkeite um ein Objekt zu stoppen

BeitragDi, Jun 29, 2004 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi...mal wieder eine Frage:
Ein Objekt wird dargestellt und lässt sich über die Pfeiltasten komplett in alle Richtungen bewegt.
Nun werden "Wände" gemalt und es soll erreicht werden, das wenn der SPieler dagegen Fährt, abprallt oder einfach nicht durch kommt.
Ich weiß wie es theoretisch geht, bekomme es aber nicht hin Evil or Very Mad
Also ich habe mit der Pythagoras Formal die Abstände zwischen SPieler und Wand gemessen und wenn ein bestimmter Abstand erreicht ist, soll der Spieler auf die (es werden die aktuellsten Koord's festgehalten) zurückgesetzt werden! DAs ist aber keine gute Möglichkeit und daher frage ich nochmal nach Smile
Außerdem gibt es Prob's bei der Abtsandsmessung, denn die "Wände" sind mitunter 30*60 groß Confused und da ist der Abstand ob man nun von unten/oben oder rechts/links kommt verschieden... Rolling Eyes
~ Hey Ho Let's Go ~

Blatolo

BeitragDi, Jun 29, 2004 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
temp_x=player_x
temp_y=player_y
player_x=player_x+move_x
player_y=player_y+move_y
if imagescollide(player,player_x,player_y,wand,wand_x,wand_y)
player_x=temp_x
player_y=temp_y
endif

So könnte man das zum Beispiel lösen.
 

Blitzkrieg Bop

BeitragDi, Jun 29, 2004 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, klappt leider nicht Confused
~ Hey Ho Let's Go ~

rambo256

BeitragDi, Jun 29, 2004 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das
Code: [AUSKLAPPEN]

temp_x=player_x
temp_y=player_y

muss immer vor der "Tasteneingabe". Also immer vor der Tastenabfragen.
Probiers mal so,falls du es noch nicht hattest.[/code]
Asus F53z

Das Leben ist eine reine Konkatenation...

Blatolo

BeitragDi, Jun 29, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
habe das temp ja auch an den anfang geschrieben.
und dann halt die neue pos per move varis bestimmt.
Die kannst du natürlich durch tasten ersetzen.
 

Blitzkrieg Bop

BeitragDi, Jun 29, 2004 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Merkwürdig...in meiner "Spieler" Funktion steht:
Code: [AUSKLAPPEN]

tempx=s\x
tempy=s\y
tempx2=s2\x2
tempy2=s2\y2

If KeyDown(hoch) Then
;und die anderen tasten

Und bei der Kolli Abfrage zwischen SPieler und wand steht:
Code: [AUSKLAPPEN]

For wa.wand=Each wand
   If ImageRectCollide(wand1,wa\x,wa\y,0,s\x-22,s\y-25,45,45)
      kolli=kolli+1
      s\x=tempX
      s\y=tempy
   EndIf
Next

Doch da tut sich garnichts...
P.s.: Natürlich gilt: Global tempx,tempy,tempy2,tempx2
~ Hey Ho Let's Go ~

Blatolo

BeitragDi, Jun 29, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso subtrahierst du von den Spielerkoordinaten 22 bzw. 25?
und warum kolli=kolli+1 ?
Außerdem finde ich es komisch dass du die Wände als Image abfragst aber den Spieler als rect.
Andersrum würde es doch denke ich mehr sinn machen.
Oder sind die wände nicht rechteckig?
 

Blitzkrieg Bop

BeitragDi, Jun 29, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja....also das mit dem Subtrahieren ist ja egal....denke dir halt feste werte dafür, geht nach dem Grundsatz:
x1,y1,breite,hoehe
und warum der Spieler ein Rect ist?
Naja, der SPieler kann sich um 360° drehen und es ist äußerst praktisch ein Rect darum zu ziehen (deshalb auch die subtraktion von s\x und s\y)
und das dann auf Kolli zu prüfen.
Löst aber dennoch nicht meine Probs Confused
~ Hey Ho Let's Go ~

Blatolo

BeitragDi, Jun 29, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Was funzt denn nun genau nicht?
kannste dich nie bewegen oder kollidiert er an falschen positionen oder kannste immernoch überall hingehen.
 

Blitzkrieg Bop

BeitragDi, Jun 29, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann wie durch Zauberhand durch die Wände fahren^^
Also , die Kolli funzt nicht! Gibt es da nicht noch andere Wege als mit dem tempX und tempY ?
~ Hey Ho Let's Go ~

Blatolo

BeitragDi, Jun 29, 2004 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntes z.B. die Bewegung erneut machen nur in die entgegengesetzte richtung.
Aber ich denke nioht dass es funzen wird.
Denn das prob liegt wohl an der kollisionsprüfung
 

Blitzkrieg Bop

BeitragDi, Jun 29, 2004 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben...und da die Wände wie gesagt 30*60 groß sind ist das alles ein bisschen schlecht!
Kann man nicht eine Art "Abprall-Simulation" einbauen? Mit Sin und Cos wird der Gegner leicht zurückgeprallt oder so Confused
~ Hey Ho Let's Go ~

Blatolo

BeitragDi, Jun 29, 2004 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mir mal grad nen kleines prog mit temp varis geschrieben.
Funzt ohne probs.

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type wand
   Field x,y
   Field r,g,b
End Type

Type spieler
   Field x,y
End Type

For i=1 To 5
   w.wand=New wand
   w\x=i*50
   w\y=100
   w\r=Rand(0,255)
   w\g=Rand(0,255)
   w\b=Rand(0,255)
Next

s.spieler=New spieler
s\x=0
s\y=0

While Not KeyDown(1)
   Cls
   temp_x=s\x
   temp_y=s\y

   s\x=s\x+KeyDown(205)-KeyDown(203)
   s\y=s\y+KeyDown(208)-KeyDown(200)
   
   For w.wand=Each wand
      If RectsOverlap(w\x,w\y,50,50,s\x,s\y,20,20)
         s\x=temp_x
         s\y=temp_y
      EndIf
   Next
   
   Color 255,0,0
   Rect s\x,s\y,20,20
   
   For w.wand=Each wand
      Color w\r,w\g,w\b
      Rect w\x,w\y,50,50
   Next
   Flip
Wend

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group