Difference between revisions of "R3d.World:testCollision"

From GiderosMobile
(Created page with "'''Available since:''' Gideros 2019.10<br/> '''Class:''' R3d.World<br/> === Description === Checks collisions between two bodies. <source lang="lua"> r3d.World:testCollis...")
 
 
(6 intermediate revisions by 2 users not shown)
Line 3: Line 3:
  
 
=== Description ===
 
=== Description ===
Checks collisions between two bodies.
+
World Query Collider. Checks collisions between two bodies and retrieves contacts.
<source lang="lua">
+
<syntaxhighlight lang="lua">
r3d.World:testCollision(bodyA,bodyB,callback,category)
+
r3d.World:testCollision([bodyA],[bodyB],callback,[category])
</source>
+
</syntaxhighlight>
 +
 
 +
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 ===
Line 15: Line 22:
  
 
=== Example ===
 
=== Example ===
<source lang="lua">
+
<syntaxhighlight lang="lua">
function callback()
+
function callback(e)
print("xxx")
+
print(e.fixture1, e.body1)
 +
print(e.fixture2, e.body2)
 +
print(e.body1.id, e.body2.id)
 
end
 
end
 
world:testCollision(bodyA, callback)
 
world:testCollision(bodyA, callback)
 
world:testCollision(bodyA, bodyB, callback, 1)
 
world:testCollision(bodyA, bodyB, callback, 1)
 
world:testCollision(callback)
 
world:testCollision(callback)
</source>
+
</syntaxhighlight>
  
 
{{R3d.World}}
 
{{R3d.World}}

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)