3D Lingo Dictionary > C-D > collisionNormal

 

collisionNormal

Syntax

collisionData.collisionNormal

Description

3D collisionData property; a vector indicating the direction of the collision.

The collisionData object is sent as an argument with the #collideWith and #collideAny events to the handler specified in the registerForEvent, registerScript, and setCollisionCallback commands.

The #collideWith and #collideAny events are sent when a collision occurs between models to which collision modifiers have been added. The resolve property of the models' modifiers must be set to TRUE.

This property can be tested but not set.

Example

This example has two parts. The first part is the first line of code, which registers the #explode handler for the #collideAny event. The second part is the #explode handler. When two models in the cast member named MyScene collide, the #explode handler is called and the collisionData argument is sent to it. The first ten lines of the #explode handler create the model resource SparkSource and set its properties. This model resource is a single burst of particles. The tenth line sets the direction of the burst to collisionNormal, which is the direction of the collision. The eleventh line of the handler creates a model called SparksModel using the model resource SparkSource. The last line of the handler sets the position of SparksModel to the position where the collision occurred. The overall effect is a collision that causes a burst of sparks to fly in the direction of the collision from the point of contact.

member("MyScene").registerForEvent(#collideAny, #explode, 0)
on explode me, collisionData
  nmr = member("MyScene").newModelResource("SparkSource", #particle)
  nmr.emitter.mode = #burst
  nmr.emitter.loop = 0
  nmr.emitter.minSpeed = 30
  nmr.emitter.maxSpeed = 50
  nmr.emitter.angle = 45
  nmr.colorRange.start = rgb(0, 0, 255)
  nmr.colorRange.end = rgb(255, 0, 0)
  nmr.lifetime = 5000 
  nmr.emitter.direction = collisionData.collisionNormal  
  nm = member("MyScene").newModel("SparksModel", nmr)
  nm.transform.position = collisionData.pointOfContact
end

See also

pointOfContact, modelA, modelB, resolveA, resolveB, collision (modifier)