User Guide

collisionNormal 695
collisionNormal
Usage
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 = vector(0,0,-1)
nm = member("MyScene").newModel("SparksModel", nmr)
nm.transform.position = collisionData.pointOfContact
nm.pointAt(collisionData.pointOfContact + collisionData.collisionNormal)
end
See also
pointOfContact, modelA, modelB, resolveA, resolveB, collision (modifier)