#how to make tracer scale correctly?

1 messages · Page 1 of 1 (latest)

gray cosmos
#

so basically i want to convey the direction the shot came from, so i figured a very quick scaling would work pretty well, but it scales from the middle and im not exactly sure how to make sure the scale tweens to originate from the gun's barrel since it's based on the absolute center of the object.

function module.trace(name:string,origin:Vector3,endpos:Vector3,thickness:number,color:Color3,fadetime:number,travels:boolean)
    local newTask = nil
    newTask = task.spawn(function()
        local newTracer = Instance.new("Part")
        newTracer.Parent = workspace.game.effects.tracers
        newTracer.Transparency = 0
        newTracer.Anchored = true
        newTracer.CanCollide = false
        newTracer.CanQuery = false
        newTracer.Size = Vector3.new(thickness,thickness,0)
        local size = Vector3.new(thickness,thickness,(origin-endpos).Magnitude)
        newTracer.CFrame = CFrame.lookAt(origin,endpos)*CFrame.new(0,0,-((origin-endpos).Magnitude)/2)
        newTracer.Color = color
        newTracer.Material = Enum.Material.Neon
        newTracer.Name = name
        local newTween = game:GetService("TweenService"):Create(newTracer,TweenInfo.new(fadetime),{Transparency=1,Size = Vector3.new(size.X,size.Y,size.Z)})
        newTween:Play()
        newTween.Completed:Connect(function() newTracer:Destroy() task.cancel(newTask) end)
    end)
end
ornate bone
#

The way I would do it is to position the tracer at the barrel of the gun and move it to the middle in time with the scaling.

#

try this:

function module.trace(name:string,origin:Vector3,endpos:Vector3,thickness:number,color:Color3,fadetime:number,travels:boolean)
local newTask = nil
newTask = task.spawn(function()
local newTracer = Instance.new("Part")
newTracer.Parent = workspace.game.effects.tracers
newTracer.Transparency = 0
newTracer.Anchored = true
newTracer.CanCollide = false
newTracer.CanQuery = false
newTracer.Size = Vector3.new(thickness,thickness,0)
local size = Vector3.new(thickness,thickness,(origin-endpos).Magnitude)
newTracer.CFrame = CFrame.lookAt(origin,endpos)*CFrame.new(0,0,-((origin-endpos).Magnitude)/2)
newTracer.Color = color
newTracer.Material = Enum.Material.Neon
newTracer.Name = name
local newTween = game:GetService("TweenService"):Create(newTracer,TweenInfo.new(fadetime),{Transparency=1,Size = Vector3.new(size.X,size.Y,size.Z), CFrame = CFrame.lookAt(origin,endpos)*CFrame.new(0,0,-((origin-endpos).Magnitude)/2)})
newTween:Play()
newTween.Completed:Connect(function() newTracer:Destroy() task.cancel(newTask) end)
end)
end

gray cosmos
#

the math seems correct yet nothings changed

#

alright so

#

i somewhat fixed it

#

but now it travels from the endpos to the origincrying