Beste Möglichkeite um ein Objekt zu stoppen
Übersicht

Blitzkrieg BopBetreff: Beste Möglichkeite um ein Objekt zu stoppen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() Außerdem gibt es Prob's bei der Abtsandsmessung, denn die "Wände" sind mitunter 30*60 groß ![]() ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nö, klappt leider nicht ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was funzt denn nun genau nicht?
kannste dich nie bewegen oder kollidiert er an falschen positionen oder kannste immernoch überall hingehen. |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group