Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

First person viewmodel error?

I'm currently coding a first person viewmodel. I'm trying to weld a brick to the camera's CFrame and weld all the other bricks (ex. arms, legs, gun) to that. It works fine for two arms, but when I add some more welds, my arm welds break.

local player = game.Players.LocalPlayer
local character = game.Workspace:WaitForChild(player.Name)
local cam = game.Workspace.CurrentCamera
local r = game:GetService("RunService")

wait(0.5)

-----------------------------------------------------------------------------

_G.weld = function(Part0, Part1, offset)
	
	local weld = Part1:FindFirstChild("Weld")
	
	if weld == nil then

		weld = Instance.new("ManualWeld", Part1)
		
	end	

	weld.Part0 = Part0
	weld.Part1 = Part1
	weld.C0 = offset
	
end

local function strip()
	
	local allowed = {"Health", "Sound", "Head", "HumanoidRootPart", "Humanoid", "Torso", "Right Leg", "Left Leg"}

	for i, v in pairs(character:GetChildren()) do
		
		local destroy = true	
		
		for j, k in pairs(allowed) do
			if v.Name == k then
				destroy = false
			end	
		end
		
		if destroy == true then
			v:Destroy()
		end
		
	end

	character.Humanoid.Animator:Destroy()
	
end

local function createCamRef()
	
	camRef = Instance.new("Part", character)
	camRef.Name = "camRef"
	camRef.CanCollide = false
	
end

local function createBodyPart(name, offset, size)
		
	local newPart = Instance.new("Part", character)
	newPart.Name = name
	newPart.CanCollide = false
	newPart.Size = size
	
	r.RenderStepped:connect(function()
		
		newPart.LocalTransparencyModifier = 0
		
	end)
	
	_G.weld(camRef, newPart, offset)
	
end

local bindCamRef = coroutine.wrap(function()
	
	while true do
		camRef.CFrame = cam.CFrame
		r.RenderStepped:wait()
	end

end)

-----------------------------------------------------------------------------

strip()

createCamRef()

createBodyPart("rightArm", CFrame.new(0.91988802, -1.18999767, -1.57000494, 0.982510507, 0.186142579, -0.00514012296, 0.00506633893, -0.0543143377, -0.998511076, -0.186144501, 0.981021106, -0.0543073677), Vector3.new(0.5, 2, 0.5))

createBodyPart("leftArm", CFrame.new(0.479999006, -1.36999798, -1.58000302, 0.973334193, -0.229391918, -5.92261415e-07, -0.0469625145, -0.199264362, -0.978819549, 0.224533245, 0.952718794, -0.204723582), Vector3.new(0.5, 2, 0.5))

bindCamRef()

1 answer

It's now obsolete and impossible to weld parts to the camera. You currently have to put a local script into StarterCharacterScripts (Maybe StarterPlayerScripts, I forget, try both) and you have to put the viewmodel into either lighting, replicatedstorage, or replicatedfirst. I recommend using Motor6Ds instead of welds, as it'll make thing easier later when you start animating.

This discussion is preserved as it was. New answers, comments, and votes are closed.