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

How do I force first-person mode?

I've seen some games on ROBLOX force first-person camera so you can't zoom out. How can I do this in my game?

2 comments

0

All you have to put in is 1 script.Parent.Parent.CameraMode="LockFirstPerson"

0

All you have to put in is 1 script.Parent.Parent.CameraMode="LockFirstPerson"

7 answers

✓ Accepted answer

ROBLOX has a neat property in the Player object called CameraMode. This property holds an Enum value, which can be either Classic (which is the typical default setting) or LockFirstPerson.

You can use LockFirstPerson to force this sort of lock.

Here's an example code that would go in a regular Script...

game.Players.PlayerAdded:connect(function(player)
	player.CameraMode = "LockFirstPerson"
end)

1 comment

12

Please don’t use a string where enum items are expected. Use Enum.CameraMode.LockFirstPerson instead of "LockFirstPerson".

first of all you can't just lockfirstperson and put report or while loop it'll only work once to correct this error you would have to do something like this

player = game.Players.LocalPlayer
while true do
wait(0)--change this to whatever you want
player.CameraMode = Enum.CameraMode.Classic
Player.CamerMode =  Enum.CameraMode.LockFirstPerson
end

1 comment

0

sorry i meant repeat not report sorry

There is a lot simpler way of just making them first person as soon as they spawn, if you want this then:

repeat wait() until game.Players.LocalPlayer
local p = game.Players.LocalPlayer
p.CameraMode = "LockFirstPerson"

Hope this helps.

Make a GUI that says something like this: "Click here to play" and when its clicked, make it run this

script.Parent.MouseButton1Down:connect(function()
local fps = game.Lighting.fpsScript:clone()
fps.Parent=game.Players.LocalPlayer -- if localScript
--elseif not local script then
--fps.Parent=script.Parent until it reaches your player
fps.Disabled = false
-- how I did mine: http://www.roblox.com/Weld-Testing-place?id=153151316 
-- it adds a sword script where you can swing your sword without a hopperbin or tool and its broken ATM
end)

you can lock first person mode by inserting a script which is

while true do
	wait()
	local c = workspace:GetChildren()
	for i=1, #c do
		if c[i].className == "Camera" and (c[i].CoordinateFrame.p - c[i].Focus.p).magnitude > 40 then
			c[i].CoordinateFrame = c[i].CoordinateFrame * CFrame.new((CFrame.new(c[i].CoordinateFrame.p, c[i].Focus.p)).lookVector * (c[i].CoordinateFrame.p - c[i].Focus.p).magnitude)
		end
	end
end

or you can do a command to lock and unlock first person view by inserting a script and typing

function onPlayerSpawned(player, character)
	player.CameraMode = "LockFirstPerson"
end

function onPlayerChatted(player, message, recipient)
	if player.userId == game.CreatorId and game.CreatorType == Enum.CreatorType.User then
		if message == "/thirdperson" then
			player.CameraMode = "Classic"
		elseif message == "/firstperson" then
			player.CameraMode = "LockFirstPerson"
		end
	end
end

function onPlayerEntered(player)
	player.CharacterAdded:connect(function (char) onPlayerSpawned(player, char) end)
	player.Chatted:connect(function (msg, rec) onPlayerChatted(player, msg, rec) end)

	player.CameraMode = "LockFirstPerson"
end

game.Players.PlayerAdded:connect(onPlayerEntered)

hope it helps :)

all you have to type is

script.Parent.Parent.CameraMode="LockFirstPerson"

and that's it 1 line is enough, I tried it, it worked for me :p

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