What I essentially want to achieve is a grid of raycasts on the back face on the part that fire through the width of the part to the front face.
Sorry for the poorly drawn illustration:
What’s the best way to go about achieving this?
What I essentially want to achieve is a grid of raycasts on the back face on the part that fire through the width of the part to the front face.
Sorry for the poorly drawn illustration:
What’s the best way to go about achieving this?
Get the CFrame of the part and add Vector3(0, 0 part.Size.Z/2)
Set the raycast origin to this new position
This should subtract the middle of the part by the different from the middle to the back face
If the raycast detections itself just add it to the RaycastParams
Something like this
local rayOrigin = part.CFrame + Vector3.new(0, 0, part.Size.Z/2)
rayOrigin = rayOrigin.Position
I’m also kind of confused on your question so sorry if I gave you a bad answer
It’s fine! For clarification I want to fire a grid of ray-casts from the back of the part to the front.
I want to know the best way to make a grid of Vector3s that are the size of the part.
To achieve a grid of raycasts on the back face of a part that fire through its width to the front face, you can use a combination of vector math and looping. Here’s a step-by-step guide:
CFrame and Vector3 classes to achieve this.Raycast function to perform the raycast. If you’re using CFrame to calculate ray directions, you can use the LookVector property to get the direction.Here’s an example of how you might implement this in Roblox Lua:
luaCopy code
-- Parameters
local part = -- your part reference here
local gridSizeX = 5
local gridSizeY = 5
-- Calculate ray directions
local rayLength = part.Size.Z
local raySpacingX = part.Size.X / gridSizeX
local raySpacingY = part.Size.Y / gridSizeY
for i = 0, gridSizeX - 1 do
for j = 0, gridSizeY - 1 do
-- Calculate ray origin at the back face of the part
local rayOrigin = part.CFrame:PointToWorldSpace(Vector3.new(-part.Size.X / 2 + i * raySpacingX, -part.Size.Y / 2 + j * raySpacingY, -part.Size.Z / 2))
-- Calculate ray direction
local rayDirection = part.CFrame.LookVector
-- Perform raycast
local result = workspace:Raycast(rayOrigin, rayDirection * rayLength)
if result then
-- Handle the raycast hit, e.g., highlight the hit part or perform some action
end
end
end
Replace part with your actual part reference and adjust gridSizeX and gridSizeY to set the number of rays in the X and Y directions.
Keep in mind that raycasts can be resource-intensive, so if you’re casting a large number of rays, consider optimizing your code and adjusting the parameters to find the right balance between accuracy and performance.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.