Difference between revisions of "R3d.World:raycast"

From GiderosMobile
 
Line 23: Line 23:
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
 
function raycastcallback(c)
 
function raycastcallback(c)
print("world point coords:", c.worldPoint[1], c.worldPoint[2], c.worldPoint[3])
+
-- fixture: table
 +
-- body: table
 +
-- worldNormal: table
 +
-- hitFraction: number
 +
-- worldPoint: table
 +
-- triangleIndex: number
 +
for k, v in pairs(c.fixture) do
 +
print("fixture:", k, v)
 +
end
 +
print("body id:", c.body.id)
 
print("world normal coords:", c.worldNormal[1], c.worldNormal[2], c.worldNormal[3])
 
print("world normal coords:", c.worldNormal[1], c.worldNormal[2], c.worldNormal[3])
 
print("hit fraction:", c.hitFraction)
 
print("hit fraction:", c.hitFraction)
print("mesh subpart:", c.meshSubpart)
+
print("world point coords:", c.worldPoint[1], c.worldPoint[2], c.worldPoint[3])
 
print("triangle index:", c.triangleIndex)
 
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
 
end
 
world:raycast(0, 0, 0, 0, 10, -32, raycastcallback)
 
world:raycast(0, 0, 0, 0, 10, -32, raycastcallback)

Latest revision as of 02:49, 18 December 2025

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)
	-- fixture: table
	-- body: table
	-- worldNormal: table
	-- hitFraction: number
	-- worldPoint: table
	-- triangleIndex: number
	for k, v in pairs(c.fixture) do
		print("fixture:", k, v)
	end
	print("body id:", c.body.id)
	print("world normal coords:", c.worldNormal[1], c.worldNormal[2], c.worldNormal[3])
	print("hit fraction:", c.hitFraction)
	print("world point coords:", c.worldPoint[1], c.worldPoint[2], c.worldPoint[3])
	print("triangle index:", c.triangleIndex)
end
world:raycast(0, 0, 0, 0, 10, -32, raycastcallback)