Hello, I'm trying to make a laser that spawns 5 studs in front of the character that spans from the sky until the ground. In addition, I would like to move the laser forwards for a few seconds in the direction my character is facing until it gets destroyed.
Currently, my laser spawns on the intended location, but it will always 'look' towards the middle of the baseplate/origin no matter where it was spawned. In addition, the laser will move towards that point in the baseplate instead of the front of my character.
I'm thinking it is because of the CFrame properties that I used, or I'm doing the wrong calculations. Here is my code:
local Player = game.Players.LocalPlayer
repeat wait() until Player.Character.Humanoid
local Character = Player.Character
local Human = Player.Character.Humanoid
local OnCooldown = false
function LaserCutter()
if OnCooldown == false then
--load and play animations here
OnCooldown = true
--offset by 5 studs in front of the character from high above
local SkyPosition = Character.HumanoidRootPart.CFrame*CFrame.new(Vector3.new(0,500,-5))
--raycast downwards
local Raycast = Ray.new(SkyPosition.p, -SkyPosition.upVector * 800)
local Ground, GroundPosition = workspace:FindPartOnRay(Raycast, Player.Character, false, false)
if Ground then print('ground found') end
--this creates a part up in the sky
local Origin = Instance.new("Part", workspace)
Origin.Transparency = 1
Origin.Anchored = true
Origin.CanCollide = false
Origin.CFrame = CFrame.new(SkyPosition.p, Character.Head.CFrame.lookVector)
--this creates a part on the ground
local Laser = Instance.new("Part", workspace)
Laser.BrickColor = BrickColor.new("Deep orange")
Laser.Size = Vector3.new(3,3,3)
Laser.Anchored = true
Laser.Material = "Neon"
Laser.CFrame = CFrame.new(GroundPosition, Character.Head.CFrame.lookVector)
Laser.CanCollide = false
--create a beam connecting the sky and the ground for laser effects
--[[
local AttachmentOri = Instance.new("Attachment", Origin)
local AttachmentEnd = Instance.new("Attachment", Laser)
local LaserBeam = Instance.new("Beam", Origin)
LaserBeam.Attachment0 = AttachmentOri
LaserBeam.Attachment1 = AttachmentEnd
LaserBeam.FaceCamera = true
LaserBeam.Segments = 1
LaserBeam.Width0 = 3
LaserBeam.Width1 = 3
LaserBeam.Texture = "rbxassetid://908765959"
LaserBeam.TextureSpeed = 0.2
LaserBeam.TextureMode = "Stretch"
LaserBeam.LightEmission = 0.4
LaserBeam.LightInfluence = 1]]
--code for moving the part is here
local start = 0
while wait(0.01) do
start = start + 1
if start == 100 then
Origin:Destroy()
Laser:Destroy()
break
end
Origin.CFrame = Origin.CFrame + Origin.CFrame.lookVector*0.2
Laser.CFrame = Laser.CFrame + Laser.CFrame.lookVector*0.2
end
wait(2)
OnCooldown = false
return
end
end
I apologize if I'm not understandable enough, and any help is appreciated.

1 comment
I solved this.