Difference between revisions of "B2.Contact"
From GiderosMobile
(15 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | '''Supported platforms:''' android | + | <languages /> |
+ | <!-- GIDEROSOBJ:b2.Contact --> | ||
+ | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/> | ||
'''Available since:''' Gideros 2012.09.6<br/> | '''Available since:''' Gideros 2012.09.6<br/> | ||
+ | |||
=== Description === | === 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. | |
− | 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 === | === Examples === | ||
− | '''Checking collisions from bottom using b2.Contact''' | + | '''Checking collisions from bottom using b2.Contact''' |
− | < | + | <syntaxhighlight lang="lua"> |
+ | local isTouchingGround = false | ||
world:addEventListener(Event.BEGIN_CONTACT, function(e) | world:addEventListener(Event.BEGIN_CONTACT, function(e) | ||
local manifold = e.contact:getWorldManifold() | local manifold = e.contact:getWorldManifold() | ||
Line 23: | Line 26: | ||
isTouchingGround = false | isTouchingGround = false | ||
end | end | ||
− | end)</ | + | end) |
+ | </syntaxhighlight> | ||
+ | |||
{|- | {|- | ||
− | | style="width: 50%;"| | + | | style="width: 50%; vertical-align:top;"| |
=== Methods === | === Methods === | ||
− | [[b2.Contact:getChildIndexA]] | + | [[b2.Contact:getChildIndexA]] <br/><!--GIDEROSMTD:b2.Contact:getChildIndexA() --> |
− | [[b2.Contact:getChildIndexB]] | + | [[b2.Contact:getChildIndexB]] <br/><!--GIDEROSMTD:b2.Contact:getChildIndexB() --> |
− | [[b2.Contact:getFixtureA]] | + | [[b2.Contact:getFixtureA]] <br/><!--GIDEROSMTD:b2.Contact:getFixtureA() --> |
− | [[b2.Contact:getFixtureB]] | + | [[b2.Contact:getFixtureB]] <br/><!--GIDEROSMTD:b2.Contact:getFixtureB() --> |
− | [[b2.Contact:getFriction]] | + | [[b2.Contact:getFriction]] <br/><!--GIDEROSMTD:b2.Contact:getFriction() --> |
− | [[b2.Contact:getManifold]] | + | [[b2.Contact:getManifold]] <br/><!--GIDEROSMTD:b2.Contact:getManifold() --> |
− | [[b2.Contact:getRestitution]] | + | [[b2.Contact:getRestitution]] <br/><!--GIDEROSMTD:b2.Contact:getRestitution() --> |
− | [[b2.Contact:getWorldManifold]] | + | [[b2.Contact:getWorldManifold]] <br/><!--GIDEROSMTD:b2.Contact:getWorldManifold() --> |
− | [[b2.Contact:isTouching]] | + | [[b2.Contact:isTouching]] <br/><!--GIDEROSMTD:b2.Contact:isTouching() --> |
− | [[b2.Contact:resetFriction]] | + | [[b2.Contact:resetFriction]] <br/><!--GIDEROSMTD:b2.Contact:resetFriction() --> |
− | [[b2.Contact:resetRestitution]] | + | [[b2.Contact:resetRestitution]] <br/><!--GIDEROSMTD:b2.Contact:resetRestitution() --> |
− | [[b2.Contact:setEnabled]] | + | [[b2.Contact:setEnabled]] <br/><!--GIDEROSMTD:b2.Contact:setEnabled(flag) --> |
− | [[b2.Contact:setFriction]] | + | [[b2.Contact:setFriction]] <br/><!--GIDEROSMTD:b2.Contact:setFriction(friction) --> |
− | [[b2.Contact:setRestitution]] | + | [[b2.Contact:setRestitution]] <br/><!--GIDEROSMTD:b2.Contact:setRestitution(restitution) --> |
− | | style="width: 50%;"| | + | |
+ | | style="width: 50%; vertical-align:top;"| | ||
=== Events === | === Events === | ||
=== Constants === | === Constants === | ||
|} | |} | ||
+ | |||
+ | ---- | ||
+ | *'''[[LiquidFun]]''' |
Latest revision as of 01:45, 1 December 2023
Supported platforms:
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)