Difference between revisions of "B2.Contact"
From GiderosMobile
| Line 6: | Line 6: | ||
The class manages contact between two shapes. A contact exists for each overlapping AABB in the broad-phase (except if filtered). Therefore a contact object may exist that has no contact points.<br /> | The class manages contact between two shapes. A contact exists for each overlapping AABB in the broad-phase (except if filtered). Therefore a contact object may exist that has no contact points.<br /> | ||
<br /> | <br /> | ||
| + | === Examples === | ||
| + | '''Checking collisions from bottom using b2.Contact'''<br/> | ||
| + | <source lang="lua">local isTouchingGround = false | ||
| + | world:addEventListener(Event.BEGIN_CONTACT, function(e) | ||
| + | local manifold = e.contact:getWorldManifold() | ||
| + | if manifold.normal.y > 0.9 then | ||
| + | --collision came from bottom | ||
| + | isTouchingGround = true | ||
| + | end | ||
| + | end) | ||
| + | |||
| + | world:addEventListener(Event.END_CONTACT, function(e) | ||
| + | local manifold = e.contact:getWorldManifold() | ||
| + | if manifold.normal.y < 0.1 then | ||
| + | --collision ended from bottom | ||
| + | isTouchingGround = false | ||
| + | end | ||
| + | end)</source> | ||
{|- | {|- | ||
| style="width: 50%;"| | | style="width: 50%;"| | ||
Revision as of 10:46, 23 August 2018
Supported platforms: android, ios, mac, pc
Available since: Gideros 2012.09.6
Description
The class manages contact between two shapes. A contact exists for each overlapping AABB in the broad-phase (except if filtered). Therefore a contact object may exist that has no contact points.
Examples
Checking collisions from bottom using b2.Contact
local isTouchingGround = false
world:addEventListener(Event.BEGIN_CONTACT, function(e)
local manifold = e.contact:getWorldManifold()
if manifold.normal.y > 0.9 then
--collision came from bottom
isTouchingGround = true
end
end)
world:addEventListener(Event.END_CONTACT, function(e)
local manifold = e.contact:getWorldManifold()
if manifold.normal.y < 0.1 then
--collision ended from bottom
isTouchingGround = false
end
end)