|
Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
|
| |
|
|
Referenzhandbuch |
|
|
Referenzhandbuch
|
Kapitel 32
|
Kollisionsabfrage
Dieses Kapitel befaßt sich mit den Befehlen zur Kollisionsabfrage, also dem Erkennen, welches Objekt eine Kollision ausgelöst hat.
Befehl: SetColl
Syntax: SetColl Farbe,Farbtiefe[,Playfields]
Modus: Amiga/Blitz
Es gibt drei unterschiedliche Befehle, um eine Sprite-/Bitmap-Kollision festzustellen. Eine ist SetColl (die
anderen SetCollOdd und SetCollHi). Alle drei melden, welche Farben eine
Kollision mit Sprites hat. Dies erlaubt das Anfertigen von "sicheren" und "unsicheren" Feldern auf der Bitmap.
SetColl ermöglicht das Festlegen einer einzelnen Farbe, die, wenn in der Bitmap vorhanden und in
Kontakt mit Sprites, eine Kollisionsmeldung auslöst.
Farbe legt die "Kollisionfarbe" fest, Farbtiefe
den Bereich (Bitplane- oder Farbtiefe), der zum Test herangezogen wird.
Playfields ist optional und wird nur bei Dualplayfields verwendet.
Playfield = 1 benutzt eine Farbe der Vordergrundbitmap
Playfield = 0 benutzt eine Farbe der Hintergrundbitmap.
Die Befehle DoColl und PColl erledigen die eigentliche Kollisionsabfrage.
Beispiel:
BitMap 0,320,200,4 ;erstelle eine 16-farbige Bitmap
BitMapOutput 0 ;und sende die Print-Ausgaben zun ihr
Boxf 0,0,7,7,1 ;ein Viereck auf der Bitmap
GetaShape 0,0,0,8,8 ;als Shape aufnehmen
GetaSprite 0,0 ;Shape in Sprite verwandeln
Free Shape 0 ;und das Shape wieder freigeben
Cls ;Bitmap löschen
BLITZ ;BLITZ MODE!
Slice 0,44,320,200,$fff8,4,8,32,320,320 ;einfaches Slice
Show 0 ;Bitmap im Slice zeigen
For k=1 To 100 ;100 Sterne malen
Plot Rnd(320),Rnd(200),Rnd(14)+1 ;in jeder Farbe außer 15
Next
Circlef 160,100,40,15 ;der tote Stern in Farbe 15
SetColl 15,4 ;Kollision mit Farbe 15
Mouse On ;Maus einschalten
Pointer 0,0 ;Mauszeiger setzen
While Joyb(0)=0 ;während der Mausknopf nicht gedrückt wird...
VWait ;auf Vertical Blank warten
DoColl ;Blitz soll die Kollisionen wahrnehmen
Locate 0,0 ;Position des Cursors
If PColl(0) ;ist das Sprite in Kanal 0 mit der Bitmap kollidiert?
Print "BANG!" ;Ja - BANG!
Else
Print " " ;Nein
EndIf
Wend
siehe auch: SetCollOdd, SetCollHi, DoColl, PColl
Befehl: SetCollOdd
Syntax: SetCollOdd
Modus: Amiga/Blitz
SetCollOdd wird zur Kontrolle der Sprite-/Bitmap-Kollisionsüberprüfung verwendet.
SetCollOdd registriert NUR Kollisionen zwischen Sprites und ungeraden Farbregistern (1, 3, 5...) einer
Bitmapgrafik. Dies erlaubt das Anfertigen von "sicheren" Flächen mit gerader Farben (Kollision wird nicht gemeldet) und
"unsicheren" Flächen mit ungeraden Farben (Kollision wird gemeldet).
Die Befehle DoColl und PColl erledigen die eigentliche Kollisionsabfrage.
siehe auch: SetColl, SetCollHi, DoColl, PColl
Befehl: SetCollHi
Syntax: SetCollHi Bitplanes
Modus: Amiga/Blitz
SetCollHi ermöglicht eine Sprite-/Bitmap-Kollisionsabfrage zwischen Sprites und der "oberen
Hälfte" des Farbbereichs einer Bitmap.
Beispiel: Bei einer 16-Farben-Bitmap ist die obere Farbhälfte der Bereich von 8 bis 15. Der
Bitplanes-Parameter wird auf die Anzahl der Bitplanes (Farbtiefe) der Bitmap gesetzt, in der auf eine
Kollision geprüft werden soll.
Weitere Informationen erhalten Sie unter SetColl.
siehe auch: SetColl, SetCollOdd, DoColl, PColl
Befehl: DoColl
Syntax: DoColl
Modus: Blitz
DoColl startet die Kollisionüberprüfung . Die PColl- und/oder
SColl-Funktionen ermöglichen einen Test auf Sprite-/Bitmap- bzw. Sprite-/Sprite-Kollision, sobald
DoColl ausgeführt wurde. Bevor Sie DoColl aufrufen, sollte mit einen der
drei SetColl-Befehle(SetColl, SetCollOdd,
SetCollHi) die Art der Überprüfung festgelegt werden. Nach der Ausführung von
DoColl geben PColl und SColl dieselben Werte aus, bis
ein weiterer DoColl-Befehl ausgeführt wird.
siehe auch: SetColl, PColl, SColl, SetCollOdd, SetCollHi
Funktion: PColl
Syntax: PColl(Spritekanal)
Modus: Blitz
PColl ermöglicht Ihnen herauszufinden, welches Sprite mit einer Bitmapgrafik kollidiert ist. Bei einer
Kollision liefert PColl den Wert -1 (richtig), andernfalls
0 (falsch). Spritekanal legt den Kanal fest, über den Sie
das zu testende Sprite anzeigen. Vor der Benutzung von PColl muß der
DoColl-Befehl ausgeführt worden sein.
Weitere Informationen erhalten Sie unter DoColl.
siehe auch: SetColl, SetCollOdd, SetCollHi, DoColl
Funktion: SColl
Syntax: SColl(Spritekanal,Spritekanal)
Modus: Blitz
SColl wird benutzt, um festzustellen, ob die 2 in Spritekanal angegebenen Sprites kollidiert sind. Wenn ja,
wird richtig (-1), andernfalls falsch (0) zurückgegeben.
DoColl muß vor der Benutzung von SColl ausgeführt worden sein.
siehe auch: DoColl
Funktion: ShapesHit
Syntax: ShapesHit(Shapenummer,X,Y,Shapenummer,X,Y)
Modus: Amiga/Blitz
Berechnet, ob rechteckigen Flächen zweier Shapes eine Überlagerung ergeben. Der Hotspot (Shape-Handle) wird automatisch
berücksichtigt. Wenn sich 2 Shapes überlagern, gibt ShapeHit richtig
(-1), ansonsten falsch (0) aus.
siehe auch: ShapeSpriteHit, SpritesHit
Funktion: ShapeSpriteHit
Syntax: ShapeSpriteHit(Shapenummer,X,Y,Spritenummer,X,Y)
Modus: Amiga/Blitz
Die ShapeSpriteHit-Funktion berechnet, ob sich die Fläche eines Shapes an einer Position und die
Fläche eines Sprites an einer anderen Position überlappen. Wenn ja, wird richtig (-1),
andernfalls falsch (0) zurückgegeben. Die Hotspots (Handles) des Sprites und des Shapes werden
automatisch berechnet.
siehe auch: ShapeHit, SpritesHit
Funktion: SpritesHit
Syntax: SpritesHitSpritenummer,X,Y,Spritenummer,X,Y)
Modus: Amiga/Blitz
SpritesHit berechnet, ob sich die Flächen zweier Sprites überlappen. Die Hotspots (Handles) der
Sprites werden automatisch berechnet. Wenn sich die beiden Sprites überlappen, wird richtig (-1),
andernfalls falsch (0) zurückgegeben.
siehe auch: ShapesHit, ShapeSpriteHit
Funktion: RectsHit
Syntax: RectsHit(X1,Y1,Breite1,Höhe1,X2,Y2,Breite2,Höhe2)
Modus: Amiga/Blitz
Die RectsHit-Funktion wird benutzt, um festzustellen, ob sich 2 willkürliche, rechteckige Flächen
überlappen. Wenn ja, wird richtig (-1), andernfalls falsch (0)
zurückgegeben.
|
|
|
|
|
|