Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Help with raycasting?

Asked by 8 years ago

I was trying to get a general direction of STRAIGHT DOWN from the middle of my hoverboard. if I'm crazy, just say so. Here's the line of code:

local CheckIf4Studs = Ray.new(Vector3.new(script.Parent.Handle.CFrame.p), (Vector3.new(script.Parent.Handle.CFrame.x, game.Workspace.Terrain.CFrame.y, script.Parent.Handle.CFrame.z) - Vector3.new(0,script.Parent.Handle.CFrame.y,0).unit*300))   

Im getting no errors, but when I put it directly over a brick, it doesn't return hit at all.

1 answer

Log in to vote
-1
Answered by 8 years ago

Copy and paste:

local tool = script.Parent
local user

--when the tool is equipped
tool.Equipped:connect(function(mouse)
   --store the character of the person using the tool
   user = tool.Parent 

   --when the left mouse button is clicked
   mouse.Button1Down:connect(function() 
       --make and do a hit test along the ray
       local ray = Ray.new(tool.Handle.CFrame.p, (mouse.Hit.p - tool.Handle.CFrame.p).unit*300)
       local hit, position = game.Workspace:FindPartOnRay(ray, user)

       --do damage to any humanoids hit
       local humanoid = hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid")
       if humanoid then
           humanoid:TakeDamage(30)
       end

       --draw the ray
       local distance = (position - tool.Handle.CFrame.p).magnitude
       local rayPart = Instance.new("Part", user)
       rayPart.Name          = "RayPart"
       rayPart.BrickColor    = BrickColor.new("Bright red")
       rayPart.Transparency  = 0.5
       rayPart.Anchored      = true
       rayPart.CanCollide    = false
       rayPart.TopSurface    = Enum.SurfaceType.Smooth
       rayPart.BottomSurface = Enum.SurfaceType.Smooth
       rayPart.formFactor    = Enum.FormFactor.Custom
       rayPart.Size          = Vector3.new(0.2, 0.2, distance)
       rayPart.CFrame        = CFrame.new(position, tool.Handle.CFrame.p) * CFrame.new(0, 0, -distance/2)

       --add it to debris so it disappears after 0.1 seconds
       game.Debris:AddItem(rayPart, 0.1)
   end)
end)

Please accept answer ;)

0
..... I didn't want a copy and pasted laser. I wanted a raycasting that goes down. deputychicken 226 — 8y
Ad

Answer this question