postCollision

Type Event
Revision Release 2024.3703
Keywords postCollision, physics
See also Collision Detection (guide)
collision
preCollision
physics.setAverageCollisionPositions()
physics.setReportCollisionsInContentCoordinates()

Overview

Used in conjunction with the physics library. Physics engine post-collision events are exposed through the Corona event listener model with the event name of "postCollision". In addition to these events and standard collision events, Corona offers preCollision events.

Object References

Depending on whether post-collisions are detected locally or globally, references to the objects involved will vary. For more information about these two collision handling methods, see the Collision Detection guide.

Local Collision Event   Global Collision Event
event.target or self   event.object1
event.other   event.object2
event.selfElement   event.element1
event.otherElement   event.element2

Please compare these two example functions for reference variations:

-- Local postCollision handling
local function onLocalPostCollision( self, event )
    print( event.target )        --the first object in the collision
    print( event.other )         --the second object in the collision
    print( event.selfElement )   --the element (number) of the first object which was hit in the collision
    print( event.otherElement )  --the element (number) of the second object which was hit in the collision
end
object.postCollision = onLocalPostCollision
object:addEventListener( "postCollision" )

-- Global postCollision handling
local function onGlobalPostCollision( event )
    print( event.object1 )       --the first object in the collision
    print( event.object2 )       --the second object in the collision
    print( event.element1 )      --the element (number) of the first object which was hit in the collision
    print( event.element2 )      --the element (number) of the second object which was hit in the collision
end
Runtime:addEventListener( "postCollision", onGlobalPostCollision )

Gotchas

Physics engine post-collision events are quite “noisy” and may report many times per contact, potentially affecting performance. Therefore, you should only listen for these events if you truly need post-collision detection. We also recommend that you use local listeners within the objects of interest rather than listening globally to all "postCollision" events in the physics world.

Properties

event.contact

event.element1

event.element2

event.force

event.friction

event.name

event.object1

event.object2

event.other

event.otherElement

event.selfElement

event.target

event.x

event.y