Difference between revisions of "R3d.World:raycast"
(Created page with "'''Available since:''' Gideros 2019.10<br/> '''Class:''' R3d.World<br/> === Description === You can use ReactPhysics3D to test intersection between a ray and the bodies o...") |
|||
Line 22: | Line 22: | ||
=== Example === | === Example === | ||
<source lang="lua"> | <source lang="lua"> | ||
+ | function raycastcallback(c) | ||
+ | print("world point coords:", c.worldPoint[1], c.worldPoint[2], c.worldPoint[3]) | ||
+ | print("world normal coords:", c.worldNormal[1], c.worldNormal[2], c.worldNormal[3]) | ||
+ | print("hit fraction:", c.hitFraction) | ||
+ | print("mesh subpart:", c.meshSubpart) | ||
+ | print("triangle index:", c.triangleIndex) | ||
+ | for k, v in pairs(c.body) do | ||
+ | print("body:", k, v) | ||
+ | end | ||
+ | for k, v in pairs(c.fixture) do | ||
+ | print("fixture:", k, v) | ||
+ | end | ||
+ | end | ||
+ | local ray1 = world:raycast(0, 0, 0, 0, 10, -32, raycastcallback) | ||
</source> | </source> | ||
{{R3d.World}} | {{R3d.World}} |
Revision as of 15:22, 25 January 2020
Available since: Gideros 2019.10
Class: R3d.World
Description
You can use ReactPhysics3D to test intersection between a ray and the bodies of the world you have created.
Ray casting can be performed against multiple bodies, a single body or any proxy shape of a given body.
r3d.World:raycast(sx, sy, sz, ex, ey, ez, callback, category)
Parameters
sx: (number) the starting position of the raycast in the world x axis
sy: (number) the starting position of the raycast in the world y axis
sz: (number) the starting position of the raycast in the world z axis
ex: (number) the ending position of the raycast in the world x axis
ey: (number) the ending position of the raycast in the world y axis
ez: (number) the ending position of the raycast in the world z axis
callback: (function) the callback function
category: (number) bit mask for collision filtering optional
Example
function raycastcallback(c)
print("world point coords:", c.worldPoint[1], c.worldPoint[2], c.worldPoint[3])
print("world normal coords:", c.worldNormal[1], c.worldNormal[2], c.worldNormal[3])
print("hit fraction:", c.hitFraction)
print("mesh subpart:", c.meshSubpart)
print("triangle index:", c.triangleIndex)
for k, v in pairs(c.body) do
print("body:", k, v)
end
for k, v in pairs(c.fixture) do
print("fixture:", k, v)
end
end
local ray1 = world:raycast(0, 0, 0, 0, 10, -32, raycastcallback)
- 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:testAABBOverlap
- R3d.World:testCollision
- R3d.World:testOverlap