kann mir jemand zeigen wie man kollisionen macht??
Übersicht

KadoBetreff: kann mir jemand zeigen wie man kollisionen macht?? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weil ich kapier das einfach net :S
2d kollision ![]() sagen wir mal der player is auf position 50,50 und ein schrank is auf positon 100,100 was nun?? :S sry aber ich hab mir das so oft durch gelese bloss ich raff das net :S ... könntet ihr mir das zeigen vllt mit einem beispiel code?? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da gibts viele Möglichkeiten, aber für den Anfang dürfte ImagesCollide ausreichen:BlitzBasic: [AUSKLAPPEN] If ImagesCollide(player_image , player_x , player_y , player_frame , schrank_image , schrank_x , schrank_y , 0) Then |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Ofenrohr |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo,
du hast bei kollisionen meistens kästen bei denen du prüfst ob sie übereinander liegen: Code: [AUSKLAPPEN] kasten1_x = 50 ; hier bestimmst du die position des kasten1 z.b. dein spieler kasten1_y = 50 kasten1_länge = 10 ; hier bestimmst du die größe von kasten1 kasten1_breite = 10 kasten2_x = 100 ; das gleiche für den schrank kasten2_y = 100 kasten2_länge = 25 kasten2_breite = 25 repeat if (kasten1_x > kasten2_x) and (kasten1_x < kasten2_x + kasten2_länge) then collision_x = true ; hier werden die kasten auf der x - achse geprüft ob sie ineinander liegen if (kasten1_y > kasten2_y) and (kasten1_y < kasten2_y + kasten2_breite) then collision_y = true ; hier werden die kasten auf der y - achse geprüft ob sie ineinander liegen if collision_x = true then machwas if collision_y = true then machwasanderes forever mfg ofenrohr |
||
Ofenrohr.net |
Kado |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aslo das kapier ich jetzt Endlich ![]() Code: [AUSKLAPPEN] If ImagesCollide (player,x,y,0,schrank,106,100,0) Then X = 92 EndIf jedoch wie mache ich das jetzt mit y? und mit der anderen seite :S?? also rechts.... weil der springt ja dann auf 92 obwohl er auf 140 sagen wir mal ist... und wenn er von oben oder von unten kommt geht er auch auf 92 :S |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da kannst Du ImagesCollide natürlich vergessen. Löse das ganze mathematisch. Kleiner Denkanstoß:
Wenn 1. X-Koordinate plus Bildhöhe größer 2. X-Koordinate dann kollidiert rechts gleich wahr Alles klar? Insgesamt sind das zwei If...Else Kombis und schon rennt er keinen Pixel mehr in den Schrank rein ![]() Edit: Sorry, kleiner Fehler eingeschlichen, er kollidiert rechts und nicht unten ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
- Zuletzt bearbeitet von Hubsi am Sa, Dez 18, 2004 17:28, insgesamt einmal bearbeitet
Kado |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hubsi hat Folgendes geschrieben: Da kannst Du ImagesCollide natürlich vergessen. Löse das ganze mathematisch. Kleiner Denkanstoß:
Wenn 1. X-Koordinate plus Bildhöhe größer 2. X-Koordinate dann kollidiert unten gleich wahr Alles klar? Insgesamt sind das zwei If...Else Kombis und schon rennt er keinen Pixel mehr in den Schrank rein ![]() welche koordinaten meinste denn?? vom schrank oder player?? ^^ |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beide natürlich ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Kado |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
^^ ich kriege das vllt gleich hin... | ||
- Zuletzt bearbeitet von Kado am Sa, Dez 18, 2004 17:19, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
mal dir mal das ganze auf. versuch es in variablen zu fassen. überlege dir bei welchen konstellationen die kollision von wo eingetreten ist.
Das sind mathematische Grundlagen, und ich glaube nicht dass es dir was bringt wenn wir sie dir vorkauen. manchmal sind zettel und stift die besten Freunde die man haben kann. Probier es einfach. Hubsie hat dir schon einen vielversprechenden Ansatz gegeben. denk drüber nach. Oder mit Hubsies Worten: BB has no brain. Use your own ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich zeichne bei Problemen mit dem inneren Auge gerne die Situation auf ein Blatt Papier oder stelle das ganze mit Keksen nach. Dabei vergebe ich eine Position (zum Bleistift hat der Keks1 x=40,y=40, Keks2 100,100 und beide Kekse sind jeweils 50*50 Pixel goß) und rechne dann von Hand. Ist die x-Koordinate von Keks1+50 größer als die x-Koordinate von Keks2 setze ich Keks1 auf x-Pos 60. Ist die y-Pos von Keks1 kleiner als die y-Pos+50 von Keks2 setze ich die y-Pos von Keks1 auf 100+50 usw. Das ganze verpackst Du dann in zwei If...Else-Abfragen und fertich ist die Laube ![]() Edit: Ich muß schneller tippen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Kado |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich habe es mal so gemacht....
Code: [AUSKLAPPEN] If KeyDown(200) y = y -1 If x => 94 And x <= 171 And y => 90 And y <=136 y = 137 EndIf EndIf If KeyDown(208) y = y +1 If x => 94 And x <= 171 And y => 87 And y <=134 y = 86 EndIf EndIf If KeyDown(205) x = x+1 If x => 94 And x <= 171 And y => 90 And y <=134 x = 93 EndIf EndIf If KeyDown(203) x = x-1 If x => 94 And x <= 171 And y => 90 And y <=134 x = 172 EndIf EndIf jedoch find ich die lösung net so gut :S .... wenn man mehrere gegenstände hat :S |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Du mehrere Gegenstände hast würde sich vielleicht eine Tilemap empfehlen? Allerdings ist das noch mehr Mathe ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group