Extending a Part & Turning On Beam Not Working

This might sound really simple. To extend the part just increase the size & set the position, and to enable beams beam.Enabled = true.

This is what I’m trying to do:


Each hitbox has 2 attachments used for the beam.

This is the result:


*The small hitbox’s position is sideways & a little bit backwards from the blade.

The big hitbox isn’t in a weird position anymore (Idk why I didnt change something to cause it). The small hitbox was moving extremely in front of or behind the katana before the screen recording but it isnt doing that anymore either (Idk about this too).

I playtested & closed/opened studio a few times and now the small hitbox is in a random position to the top left.

This the katana. I tried turning on & off the beams in the script but the beam didnt show so I made the beams always on & it still didnt show on both server, attacker’s client, & other player’s client. UltHitbox is the smaller beam box, KatanaOrbs is for something else.


both of the hitbox’s weld’s C0 positions are the same and they’re both connected ot the handle

This is the ult ServerScript:

ultRemote.OnServerEvent:Connect(function(plr)
	if plr.Character == char then
		char:SetAttribute("Invincible", true)
		char.LawUltHighlight.Enabled = true
		local hitbox = char.Sheath.VFX.UltHitbox
		local bigBeam = char.Sheath.VFX.BigBeam
		
		-- cover katana with room
		for i,v in pairs(hitbox.Attachment1:GetChildren()) do
			v.Enabled = true
		end
		for i = 1, 6 do
			hitbox.Size += Vector3.new(0,0,1)
			hitbox.Position -= Vector3.new(0,0,-1)
			task.wait()
		end
		task.wait(0.1)
		local amogus
		local hitOpponents = {}
		
		-- extend blade hitbox
		task.spawn(function()
			local hitbox = char.Sheath.VFX.UltHitbox
			local params = OverlapParams.new()
			params.FilterDescendantsInstances = {char:GetChildren()}
			params.FilterType = Enum.RaycastFilterType.Exclude

			repeat
				task.wait()
				local box = workspace:GetPartBoundsInBox(hitbox.CFrame, hitbox.Size, params)
				for i,v in pairs(box) do
					if v.Name == "Hitbox" then
						params:AddToFilter(v)
						v.Parent:SetAttribute("Attacked", true)
						v.Parent:SetAttribute("Invincible", true)
						ultRemote:FireClient(players:GetPlayerFromCharacter(v.Parent), 1)	
						
						-- freeze char
						v.Humanoid.WalkSpeed = 0
						v.Humanoid.JumpHeight = 0
						v.Humanoid.AutoRotate = false
						local liv = Instance.new("LinearVelocity")
						liv.Name = "RoomTeleportLiv"
						liv.MaxForce = math.huge
						liv.VectorVelocity = Vector3.new(0,0,0)
						liv.Attachment0 = v.HummanoidRootpart:FindFirstChild("Attachment")
						liv.Parent = v.HumanoidRootPart
						v.Parent.HumanoidRootPart.CFrame = CFrame.new(v.Parent.HumanoidRootPartCFrame, char.HumanoidRootPart)
						
						table.insert(hitOpponents, players:GetPlayerFromCharacter(v.Parent))
					end
				end
			until amogus == "sus"
		end)
		
		-- extend blade
		for i = 1, 15 do
			hitbox.Size += Vector3.new(0,0,2)
			hitbox.Weld.C0 += Vector3.new(0,0,1)
			task.wait()
		end
		
		task.wait(0.5)
		amogus = "sus"
		-- damage/yeet
		for i,v in pairs(hitOpponents) do
			ultRemote:FireClient(v, 2)
			v.Parent.Humanoid:TakeDamage(25)
		end
		
		-- big beam vfx
		for i = 1, 15 do
			bigBeam.Size += Vector3.new(0,0,2)
			bigBeam.Weld.C0 += Vector3.new(0,0,1)
			task.wait()
		end
		task.wait(0.5)
		ultRemote:FireClient(plr, 3)
		
		hitbox.Size = Vector3.new(3,3,0.001)
		hitbox.Weld.C0 = CFrame.new(0,0,0.65) * CFrame.Angles(0, math.rad(-90), 0)
		bigBeam.Size = Vector3.new(6.5,6.5, 0.001)
		bigBeam.Weld.C0 = CFrame.new(0,0,0.65) * CFrame.Angles(0, math.rad(-90), 0)
		
		char.LawUltHighlight.Enabled = false
		char:SetAttribute("Invincible", false)
	end
end)