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 make it where my gun aims down when the right mouse button is held down?

I am trying to make my gun be able to aim down and move the camera a bit closer to the camera when i hold down the right mouse button, the right mouse button work and all but I am unsure on how to make it where the camera zooms a bit closer into the gun while you aim it down. I was thinking something like a shift lock so the player is always aiming at what he needs to shoot at, not sure if its the best idea but that is my guess. It would need to aim in fast and then when the right mouse button is not down go back to the normal player camera. Is there any way I can do this?

Current Code:

Mouse.Button2Up:Connect(function()
	print("Right Mouse up")
end)

Mouse.Button2Down:Connect(function()
	print("Right Mouse down")
end)

A good example is like the 3rd person GTA 5 aim. Something like that when you aim down the sights.

Any help is appreciated, thank you for reading this and possibly trying to help me.

2 comments

0

Assuming the player is already in Third-Person (the way you want it to be) then take the Camera.CFrame and simply move it forward.

0

I have a script for that, lemme fetch it

1 answer

✓ Accepted answer

Here's a script that does that. Works for me and it should work for you.

local RunServ = game:GetService("RunService")
local originalView = Camera.FieldOfView
local zooming = false
local UIS = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera

UIS.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton2 then
		if (Camera.CoordinateFrame.p - game.Players.LocalPlayer.Character.Head.Position).magnitude < 1 then --//Makes it so that you can only zoom in in first person, if want to be able to zoom in in third person, remove this.
			zooming = true
			UIS.MouseDeltaSensitivity = 90/originalView --//Changing mouse sensitivity
			for i = 1, 60 do
				if zooming == false then break end
				Camera.FieldOfView = Camera.FieldOfView + (45 - Camera.FieldOfView) * (i / 60) --/We do some math to make the camera zoom in properly. We could have just set the camera FOV, but we do that instead to make it look smoother.
				RunServ.RenderStepped:wait()
			end

			zooming = false
	end	end
end)


local inputend = UIS.InputEnded:Connect(function (input, GameHandledEvent)
	if input.UserInputType == Enum.UserInputType.MouseButton2 then
		zooming = false
		UIS.MouseDeltaSensitivity = 1 --//Changing mouse sensitivity again
		for i = 1, 60 do
			if zooming == true then break end
			Camera.FieldOfView = Camera.FieldOfView + (originalView - Camera.FieldOfView) * (i / 60) --//Same Thing On this side
			RunServ.RenderStepped:wait()
		end
	end
end)

Let me know if you have any problems. If you don't, then accept my answer! Cheers, Zander.

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