kann mir jemand zeigen wie man kollisionen macht??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Kado

Betreff: kann mir jemand zeigen wie man kollisionen macht??

BeitragSa, Dez 18, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
weil ich kapier das einfach net :S

2d kollision Wink

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

BeitragSa, Dez 18, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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
Text 100,100,\"Kollision\"
EndIf
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Ofenrohr

BeitragSa, Dez 18, 2004 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Dez 18, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
aslo das kapier ich jetzt Endlich Razz .... (das von hubsi ;P, das andere muss ich mir mal später genauer angucken) jedoch....
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

BeitragSa, Dez 18, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy

Edit: Sorry, kleiner Fehler eingeschlichen, er kollidiert rechts und nicht unten Embarassed
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

BeitragSa, Dez 18, 2004 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy



welche koordinaten meinste denn?? vom schrank oder player?? ^^

Hubsi

BeitragSa, Dez 18, 2004 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide natürlich Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Kado

BeitragSa, Dez 18, 2004 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
^^ ich kriege das vllt gleich hin...
  • Zuletzt bearbeitet von Kado am Sa, Dez 18, 2004 17:19, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSa, Dez 18, 2004 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
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

BeitragSa, Dez 18, 2004 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

Edit: Ich muß schneller tippen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Kado

BeitragSa, Dez 18, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Dez 18, 2004 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du mehrere Gegenstände hast würde sich vielleicht eine Tilemap empfehlen? Allerdings ist das noch mehr Mathe Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group