| ||||||||||||
Aktiviert die Kollision zwischen zwei verschiedenen Objekttypen. EntityTypes sind einfache Nummern die mit ENTITYTYPE gesetzt werden können. BlitzBasic benutzt diese EntityTypes dann um die Kollision eines Objekts mit anderen zu überprüfen. BlitzBasic hat mehrere Möglichkeiten der Kollisionsprüfung, als nur das einfache Kennzeichnen der Objekte. Auch der Kollisionsradius spielt eine bedeutende Rolle. Der Radius kann mit ENTITYRADIUS gesetzt werden. Wurde die Methode auf 1 gesetzt (Kugel-Kugel), dann muss dem Zielobjekt ENTITYRADIUS zugeteilt werden. Wird die Methode 3 benutzt (Kugel-Würfel), dann muss man ENTITYBOX ausführen. Die 2 Methode (Kugel-Polygon) benötigt keine besondere Zuweisung. Für den Fall, dass eine Kollision erkannt wurde, gibt es noch einen Parameter. Damit kann man die Reaktion des Objekts auf eine Kollision einstellen. Dadurch kann ein Objekt stoppen, sliden oder raufsliden. Alle Reaktionen werden nur dann ausgeführt, wenn UPDATEWORLD ausgeführt wird. Jedes Mal, wenn der Befehl COLLISIONS ausgeführt wird, wird die Information zu einer Kollisionsliste hinzugefügt. Diese Liste kann jederzeit mit CLEARCOLLISIONS gelöscht werden. ![]() | ||||||||||||
Parameter | ||||||||||||
| ||||||||||||
Rückgabewert | ||||||||||||
- | ||||||||||||
Beispiel | ||||||||||||
Erstellt einige Objekte. Die Kugel kann verschoben werden. Kollidierte Objekte werden angezeigt: GRAPHICS3D 640,480 SETBUFFER BACKBUFFER() camera=CREATECAMERA() ROTATEENTITY camera,45,0,0 POSITIONENTITY camera,0,15,-10 light=CREATELIGHT() ROTATEENTITY light,45,0,0 sphere=CREATESPHERE(32) ENTITYTYPE sphere,1 ENTITYRADIUS sphere,1 POSITIONENTITY sphere,0,11,0 cube=CREATECUBE() ENTITYTYPE cube,2 ENTITYCOLOR cube,0,100,0 POSITIONENTITY cube,0,-5,0 SCALEENTITY cube,10,10,10 cylinder=CREATECYLINDER(32) ENTITYTYPE cylinder,2 ENTITYCOLOR cylinder,255,0,0 POSITIONENTITY cylinder,0,7,0 SCALEENTITY cylinder,2,2,2 WHILE NOT KEYDOWN(1) x#=0 y#=0 z#=0 IF KEYDOWN(203)=1 THEN x#=-0.1 IF KEYDOWN(205)=1 THEN x#=0.1 IF KEYDOWN(208)=1 THEN z#=-0.1 IF KEYDOWN(200)=1 THEN z#=0.1 MOVEENTITY sphere,x#,-0.1,z# COLLISIONS 1,2,2,2 UPDATEWORLD RENDERWORLD col=COUNTCOLLISIONS(sphere) TEXT 0,0,"Kollision(en):" FOR i=1 TO col TEXT 000,i*20,"Entity="+COLLISIONENTITY(sphere,i) TEXT 150,i*20,"Surface="+COLLISIONSURFACE(sphere,i) TEXT 300,i*20,"Triangle="+COLLISIONTRIANGLE(sphere,i) NEXT FLIP WEND END | ||||||||||||
Siehe auch | ||||||||||||
CLEARCOLLISIONS, ENTITYBOX, ENTITYCOLLIDED, ENTITYDISTANCE, ENTITYPICK, ENTITYRADIUS, ENTITYTYPE |