#camera moving with WASD keys like bloxburg build mode

5 messages · Page 1 of 1 (latest)

radiant patio
#
local RunS = game:GetService("RunService")
local TagS = game:GetService("CollectionService")
local InputS = game:GetService("UserInputService")

local camera = game.Workspace.CurrentCamera
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

local screen = Instance.new("ScreenGui", player.PlayerGui)

local CAMERA_MOVE_SPEED_MAX = 30
local CAMERA_MOVE_FORCE = 150
local cameraVelocity = Vector3.zero

function getCameraMoveDirInput(): Vector3
    local dir = Vector3.zero

    if InputS:IsKeyDown(Enum.KeyCode.D) then dir += Vector3.xAxis end
    if InputS:IsKeyDown(Enum.KeyCode.A) then dir -= Vector3.xAxis end
    if InputS:IsKeyDown(Enum.KeyCode.S) then dir += Vector3.zAxis end
    if InputS:IsKeyDown(Enum.KeyCode.W) then dir -= Vector3.zAxis end

    if dir ~= Vector3.zero then
        dir = dir.Unit
    end

    return dir    
end

function clampV3Magnitude(v: Vector3, min: number, max:number): Vector3
    return v.Unit * math.clamp(v.Magnitude, min,  max)
end

function updateCameraMovement(dt)
    local accelDir = getCameraMoveDirInput()

    if accelDir ~= Vector3.zero then
        cameraVelocity += CAMERA_MOVE_FORCE * accelDir * dt
        cameraVelocity = clampV3Magnitude(cameraVelocity, 0, CAMERA_MOVE_SPEED_MAX)
    else
        cameraVelocity *= math.clamp(1 - (15 * dt), 0, 1)
    end

    camera.CFrame += cameraVelocity * dt 
end

function updateCamera(dt)
    updateCameraMovement(dt)
end

camera.CFrame = CFrame.new(0, 300, 0) * CFrame.Angles(-math.rad(90), 0, 0)
camera.FieldOfView = 5

camera.CameraType = Enum.CameraType.Scriptable
camera:GetPropertyChangedSignal("CameraType"):Connect(function()
    camera.CameraType = Enum.CameraType.Scriptable
end)

RunS.RenderStepped:Connect(updateCamera)
#
#

how would i make this only work if an event is triggered

misty flicker
#

you mean you wanna disconnect/connect this:

camera:GetPropertyChangedSignal("CameraType"):Connect(function()
    camera.CameraType = Enum.CameraType.Scriptable
end)

RunS.RenderStepped:Connect(updateCamera)

when a event is triggered?

#

also what's the purpose of this line

camera:GetPropertyChangedSignal("CameraType"):Connect(function()
    camera.CameraType = Enum.CameraType.Scriptable
end)