Difference between revisions of "R3d.World:testCollision"
(wip) |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
=== Description === | === Description === | ||
| − | Checks collisions between two bodies. | + | World Query Collider. Checks collisions between two bodies and retrieves contacts. |
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
| − | r3d.World:testCollision(bodyA,bodyB,callback,category) | + | r3d.World:testCollision([bodyA],[bodyB],callback,[category]) |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | '''Note''': | + | A world query collider is a collider used to perform world queries on it. World queries are manual queries performed on the physics world. |
| + | |||
| + | Sometimes, you might need to get the contacts information (contact point, normal, penetration depth, ...) that occurs in your physics world. If you are using a physics world to only test for collisions (you never call the | ||
| + | ''PhysicsWorld::update()'' method), you can retrieve contacts information directly when you call the ''PhysicsWorld::testCollision()'' group of methods. Those methods take a pointer to a ''CollisionCallback'' class. You simply need to create a custom class that inherits from this class and override the ''CollisionCallback::onContact()'' method. When you call one of the ''PhysicsWorld::testCollision()'' methods, the ''onContact()'' method of your class will be called with all the information about the contacts in parameters. | ||
| + | |||
| + | '''Note''': the functions are not called every frame. To do so, you should put the function in the ''ENTER_FRAME'' event or use the r3d:''setEventListener'' function | ||
=== Parameters === | === Parameters === | ||
Latest revision as of 22:33, 16 December 2025
Available since: Gideros 2019.10
Class: R3d.World
Description
World Query Collider. Checks collisions between two bodies and retrieves contacts.
r3d.World:testCollision([bodyA],[bodyB],callback,[category])
A world query collider is a collider used to perform world queries on it. World queries are manual queries performed on the physics world.
Sometimes, you might need to get the contacts information (contact point, normal, penetration depth, ...) that occurs in your physics world. If you are using a physics world to only test for collisions (you never call the PhysicsWorld::update() method), you can retrieve contacts information directly when you call the PhysicsWorld::testCollision() group of methods. Those methods take a pointer to a CollisionCallback class. You simply need to create a custom class that inherits from this class and override the CollisionCallback::onContact() method. When you call one of the PhysicsWorld::testCollision() methods, the onContact() method of your class will be called with all the information about the contacts in parameters.
Note: the functions are not called every frame. To do so, you should put the function in the ENTER_FRAME event or use the r3d:setEventListener function
Parameters
bodyA: (body) the body A optional
bodyB: (body) the body B optional
callback: (function) the callback function
category: (number) bit mask for collision filtering optional
Example
function callback(e)
print(e.fixture1, e.body1)
print(e.fixture2, e.body2)
print(e.body1.id, e.body2.id)
end
world:testCollision(bodyA, callback)
world:testCollision(bodyA, bodyB, callback, 1)
world:testCollision(callback)
- R3d.World
- R3d.World.new
- R3d.World:createBallAndSocketJoint
- R3d.World:createBody
- R3d.World:createFixedJoint
- R3d.World:createHingeJoint
- R3d.World:createSliderJoint
- R3d.World:destroyBody
- R3d.World:destroyJoint
- R3d.World:raycast
- R3d.World:setEventListener
- R3d.World:step
- R3d.World:testCollision
- R3d.World:testOverlap