R3d.Body:raycast
Available since: Gideros 2019.10
Class: R3d.Body
Description
Performs a ray cast on a single body.
(table) = r3d.Body:raycast(sx,sy,sz,ex,ey,ez)
Ray casting
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 collider of a given body. Note that ray casting only works from the outside of the bodies. If the origin of a ray is inside a collision shape, no hit will be reported.
Parameters
sx: (number) the starting position of the raycast on the x axis in world-space coordinates
sy: (number) the starting position of the raycast on the y axis in world-space coordinates
sz: (number) the starting position of the raycast on the z axis in world-space coordinates
ex: (number) the ending position of the raycast on the x axis in world-space coordinates
ey: (number) the ending position of the raycast on the y axis in world-space coordinates
ez: (number) the ending position of the raycast on the z axis in world-space coordinates
Return values
Returns (table) a table containing the raycast information:
- fixture: (table)
- body: (table)
- worldNormal: (table)
- hitFraction: (number)
- worldPoint: (table)
- triangleIndex: (number)
Example
local player1rc = player1.body:raycast(1,2,10, 1,2,-20)
if player1rc then
-- fixture: (table)
-- body: (table)
-- worldNormal: (table)
-- hitFraction: (number)
-- worldPoint: (table)
-- triangleIndex: (number)
print(player1rc.fixture, player1rc.body.id)
print(player1rc.worldNormal[1], player1rc.worldNormal[2], player1rc.worldNormal[3])
print(player1rc.hitFraction)
print(player1rc.worldPoint[1], player1rc.worldPoint[2], player1rc.worldPoint[3])
print("****************************")
end
- R3d.Body
- R3d.Body.DYNAMIC BODY
- R3d.Body.KINEMATIC BODY
- R3d.Body.STATIC BODY
- R3d.Body:applyLocalForceAtCenterOfMass
- R3d.Body:applyLocalForceAtLocalPosition
- R3d.Body:applyLocalForceAtWorldPosition
- R3d.Body:applyLocalTorque
- R3d.Body:applyWorldForceAtCenterOfMass
- R3d.Body:applyWorldForceAtLocalPosition
- R3d.Body:applyWorldForceAtWorldPosition
- R3d.Body:applyWorldTorque
- R3d.Body:createFixture
- R3d.Body:destroyFixture
- R3d.Body:enableGravity
- R3d.Body:getAngularDamping
- R3d.Body:getAngularLockAxisFactor
- R3d.Body:getAngularVelocity
- R3d.Body:getForce
- R3d.Body:getLinearDamping
- R3d.Body:getLinearLockAxisFactor
- R3d.Body:getLinearVelocity
- R3d.Body:getMass
- R3d.Body:getTorque
- R3d.Body:getTransform
- R3d.Body:raycast
- R3d.Body:resetForce
- R3d.Body:resetTorque
- R3d.Body:setAngularDamping
- R3d.Body:setAngularLockAxisFactor
- R3d.Body:setAngularVelocity
- R3d.Body:setIsActive
- R3d.Body:setIsAllowedToSleep
- R3d.Body:setIsSleeping
- R3d.Body:setLinearDamping
- R3d.Body:setLinearLockAxisFactor
- R3d.Body:setLinearVelocity
- R3d.Body:setMass
- R3d.Body:setSprite
- R3d.Body:setTransform
- R3d.Body:setType
- R3d.Body:testPointInside
- R3d.Body:updateMassPropertiesFromColliders