Hands in First Person Mode

Hey, so I’m making a game similar to another popular game called Rec Room. If you haven’t heard of Rec Room, you can check it out here.

Anyway, I want the player to be lock into first person, but they will be able to see there hands. My problem is that most of the scripts I find on the forum don’t work. I even asked the Assistant on Roblox for help, but that script didn’t work.

I’m not sure if its another script that’s causing the problem or its the script I’ve been finding. Here’s what the player model currently looks like when you join the game:
image

Does anyone have any script ideas that can work with my other script?

4 Likes

You’ll need to have custom hands because in first person the default position of the Roblox hands will not be visible. The ACS weapons system I’m familiar with has something like that so you could take a look at that here.

For first person as soon as someone joins your game, put this in a local script in StarterPlayerScripts:

game.Players.LocalPlayer.CharacterAdded:Connect(function()
    game.Players.LocalPlayer.CameraMode = Enum.CameraMode.LockFirstPerson
end)
1 Like

Alright, I’ll look at the ACS system to see which part I need for my model.
By the way, instead of a script you can just edit the StarterPlayer folder and just have it changed here:
image

Edit 1
I don’t know if this is my side or Roblox’s side, but I cannot access the ACS system model.

You can try this in a new LocalScript, which should show your hands in first person:

-- New LocalScript in StarterGui (or anywhere else the LocalScript also works in!)

local Player = game.Players.LocalPlayer

local ArmNames = {
	"LeftHand",
	"RightHand",
}

local function FirstPerson(Character)
	for i, v in pairs(Character:GetChildren()) do
		if table.find(ArmNames, v.Name) then
			Character.ChildAdded:Connect(function(Child)
				if Child.ClassName == "Tool" then
					if v.LocalTransparencyModifier == 1 then
						v.LocalTransparencyModifier = 0
					end
				end
			end)

			v:GetPropertyChangedSignal("LocalTransparencyModifier"):Connect(function()
				if v.LocalTransparencyModifier == 1 then
					v.LocalTransparencyModifier = 0
				end
			end)
		end
	end
end

Player.CharacterAdded:Connect(function(Character)
	FirstPerson(Character)
end)

if Player.Character then
	FirstPerson(Player.Character)
end
2 Likes

This seems to be working smoothly, thanks!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.