Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index /  Amiblitz /  Amiblitz Lesematerial /  Ab2 Referenzhandbuch (index) /  Ab2 Referenzhandbuch (Kapitel 32) / 

Referenzhandbuch



Referenzhandbuch

Kapitel 32


Kapitel 31 Inhaltsverzeichnis Kapitel 33

Kollisionsabfrage


Dieses Kapitel befaßt sich mit den Befehlen zur Kollisionsabfrage, also dem Erkennen, welches Objekt eine Kollision ausgelöst hat.

  • SetColl
  • SetCollOdd
  • SetCollHi
  • DoColl
  • PColl
  • SColl
  • ShapesHit
  • ShapeSpriteHit
  • SpritesHit
  • RectsHit



  • Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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



    Index

    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.






    Impressum
    Copyright © 2001-2007 by Cj-Stroker. Alle Rechte vorbehalten (Legal Info)
    AMIGA und zugehörige Logos sind eingetragene Warenzeichen von Amiga, Inc.