Kollisionen erfragen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Fleamor

Betreff: Kollisionen erfragen

BeitragSo, Apr 30, 2006 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mein Problem ist recht simpel aber ich kriege es einfach nicht hin.
Ich will als Geschoss eine Kugel nehmen die zu einem Type-Feld gehört.
Wenn eine bestimmte Taste gedrückt wird, wird ein zu dem Feld ein Eintrag
hinzugefügt. Einer Variable dieses Feldes wird dann die Kugel zugewiesen.

Dann kommt aber das eigentliche Problem:

Ich will das, wenn das Geschoss auf die Wand trifft, es und der Eintrag vom
Feld gelöscht werden und die Variable die die Geschosse zählt die sich in der
Welt befinden runtergezählt wird. Aber ich krieg es nicht hin eine anständige
Abfrage für die Kollision zu schreiben, denn stattdessen Fliegen sie weiter.

Das was ich von euch will ist ganz einfach das ihr mir eine Abfrage ob ein Objekt mit dem anderen Kollidiert gebt.Ich finde nämlich nur beispiele wo irgendeine Nummer des Objektes mit dem das Objekt kollidiert ermittelt wird.
*schwupp* O.O

Hellfront

BeitragSo, Apr 30, 2006 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich würde das mit ImagesCollide und ImageOverlap machen. Schau sie dir mal in der Onlinehilfe an!(oder beiwww.blitzbase.de)

zeig ma so ein Beispiel... (Link)

Fleamor

BeitragSo, Apr 30, 2006 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein ich mein 3d nicht 2d!
*schwupp* O.O

garret

BeitragSo, Apr 30, 2006 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
[EDIT] Ach so, 3D? Na dann habe ich es wohl umsonst geschrieben... Aber vielleicht hilft dir jemand in der 3D-Sektion?

-----------------------------

Mal meine Gedanken (Rectsoverlap müsste bei kleinen Kugeln ausreichen, ansonsten ImagesOverlap oder -Collide wie hacker3110 meinte):

Code: [AUSKLAPPEN]

Type geschosstype
 Field x,y
End Type

Repeat:Cls

If KeyHit(Schusstaste)
 geschoss=New geschosstype
 geschoss\x=20
 geschoss\y=20
EndIf

geschoss_anzahl=0
For geschoss.geschosstype=Each geschosstype

If Rectsoverlap(Wand_x,Wand_y, Wandbreite,Wandhöhe, geschoss\x,geschoss\y,geschossbild_breite,geschossbild_hoehe) Then
Delete geschoss.geschosstype
EndIf

geschoss_anzahl=geschoss_anzahl+1

Next

Flip:Until Keyhit(1):End


Und gib vielleicht etwas mehr Informationen zu deinem Problem/Projekt.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Fleamor

BeitragMo, Mai 01, 2006 9:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr macht es euch zu schwer!

Das einzige worum ich euch bitte ist ein Code der eine Kollisions-Abfrage
enthält die nur aussagt ob ein Objekt mit einem anderen kollidiert ist.
In 3d! Mehr nicht.

edit: Das kann doch nich so schwer sein.

Fleamor

Betreff: Hat sich erledigt

BeitragMo, Mai 01, 2006 10:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh das Problem hat sich erledigt. Embarassed
Danke jedoch an alle die sich hiermit befasst haben.
*schwupp* O.O

Fleamor

BeitragMo, Mai 01, 2006 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry wenn die Überschrift jetzt nicht mehr passt aber ich hab eine
neue Frage:

Gibt es eine Funktion mit der ermittelt werden kann ob ein Type-Eintrag der
letzte Eintrag ist oder muss ich das aufwendig mit einer Zähl-Variable machen?

garret

BeitragMo, Mai 01, 2006 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das könnte durch einen Vergleich möglich sein: If t.type=Last type

oder eher mit Object und Handle + einer Variable, die zählt wieviele Einträge überhaupt existieren.

Ansonsten: einfach ans Ende verschieben Wink
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group