Hilfe

CollisionNX

B3D

Aufruf

x# = CollisionNX# (entity%, index%)

Parameter

entity% Identität eines Objekts (entity)
index% Index der Kollisions-Liste (1 bis CountCollisions)


Rückgabewert

X-Koordinate des Normals


Beschreibung

Die Funktion CollisionNX liefert die X-Koordinate eines kollidierten Normals. Die Funktion CollisionX berechnet dagegen die absolute Kollision von dem Nullpunkt der 3D-Welt.

Dabei muss man zuerst die Identität des ersten Entity-Objekts angeben. Da ein Objekt mit mehreren anderen Objekten gleichzeitig kollidieren kann, muss man die Indexnummer angeben. Dieser Index kann nur von 1 bis CountCollisions reichen.


Beispiel

Standardbeispiel:

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

Collisions 1, 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#
   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, "NX=" + CollisionNX(sphere, i)
      Text 300, i * 20, "NY=" + CollisionNY(sphere, i)
      Text 450, i * 20, "NZ=" + CollisionNZ(sphere, i)
   Next
   Flip
Wend
End


Siehe auch

CollisionNY, CollisionNZ, CollisionX, CollisionY, CollisionZ

Übersicht 3D Grafik Kollision