TweenService/stretch punch

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    Make a punch just like gomu pistol
  2. What is the issue? Include screenshots / videos if possible!
    I cant figure out how to make it work
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    tweenservice, for i = 1 loops, welds
    After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
    I have seen this post: How to stretch the arm from one side only? but i dont know how to make any of this work; i want the punch to be like this:
    https://gyazo.com/382dd3ecbbce589bf04ae230b2cd1184
	local x = Instance.new("Part", player.Character)
	x.Name = "GomuArm"
	x.BrickColor = player.Character.LeftUpperArm.BrickColor
	x.Material = "SmoothPlastic"
	x.Size = Vector3.new(1, 1, 1)
	x.CanCollide = false
	local wx = Instance.new("Weld", x)
	wx.Part0 = player.Character.RightUpperArm
	wx.Part1 = x 
	wx.C1 = CFrame.new(0,0,0)
	
	local TweenService = game:GetService("TweenService")
	local size = 9
	local ti = TweenInfo.new(0.1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
	local parts = {
		Size = x.Size + Vector3.FromAxis(Enum.Axis.Z)*size,
		Position = x.Position + Vector3.FromNormalId(Enum.NormalId.Front)*size/2
	}
	local tween = TweenService:Create(x,ti,parts)
	tween:Play()
	

	for i = 1, 15 do
		wait()
		x.Size = x.Size + Vector3.new(0, 0, 1)
		wx.C1 = wx.C1 * CFrame.new(0, 0, -0.5)
	end
	
	wx.C1 = CFrame.new(0.9, -0.65, -8.5)

	for i = 1, 30 do
		wait()
		if i <= 17 then
			x.Size = x.Size - Vector3.new(0, 0, 1)
		else
			x.Size = x.Size + Vector3.new(0, 0, 1)
		end
		wx.C1 = wx.C1 * CFrame.new(0, 0, 0.5)
	end

Please do not ask people to write entire scripts or design entire systems for you. If you can’t answer the three questions above, you should probably pick a different category.