mirror of
https://github.com/unixtensor/Roblox-Elevator-Game.git
synced 2025-12-14 14:51:55 +00:00
102 lines
2.4 KiB
Lua
102 lines
2.4 KiB
Lua
--!optimize 2
|
|
--!native
|
|
--!strict
|
|
|
|
local Camera = {}
|
|
Camera.__index = Camera
|
|
|
|
Camera.FOV = {
|
|
Default = 70,
|
|
Zoomed = 30,
|
|
}
|
|
Camera.FOV.Speed = {
|
|
In = 0.3,
|
|
Out = 0.4
|
|
}
|
|
Camera.VignetteEnabled = true
|
|
Camera.CrosshairEffect = true
|
|
Camera.EffectsEase = Enum.EasingStyle.Quad
|
|
|
|
local Storage = game:GetService("ReplicatedStorage")
|
|
|
|
local Tween = require(Storage:WaitForChild("Tween"))
|
|
|
|
local ZoomTween = Tween.constructor()
|
|
local VignetteTween = Tween.constructor()
|
|
|
|
function Camera.constructor(CurrentCamera: Camera, Player: Player)
|
|
return setmetatable({
|
|
Camera = CurrentCamera,
|
|
Player = Player,
|
|
}, Camera)
|
|
end
|
|
|
|
function Camera:FirstPerson()
|
|
self.Player.CameraMode = Enum.CameraMode.LockFirstPerson
|
|
end
|
|
|
|
function Camera:ThirdPerson()
|
|
self.Player.CameraMode = Enum.CameraMode.Classic
|
|
end
|
|
|
|
--damn...
|
|
type Vignette = any
|
|
type Crosshair = any
|
|
|
|
function Camera:ZoomIn(Vignette: Vignette?, Crosshair: Crosshair?)
|
|
ZoomTween:Start(self.Camera, {
|
|
FieldOfView = Camera.FOV.Zoomed
|
|
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
|
|
|
if Camera.VignetteEnabled then
|
|
if Vignette then
|
|
Vignette.Screen.Enabled = true
|
|
|
|
VignetteTween:Start(Vignette.Icon, {
|
|
ImageTransparency = 0
|
|
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
|
else
|
|
warn("Camera: no Vignette object was provided for the camera", debug.traceback())
|
|
end
|
|
end
|
|
|
|
if Camera.CrosshairEffect then
|
|
if Crosshair then
|
|
VignetteTween:Start(Crosshair.Icon, {
|
|
ImageTransparency = .9
|
|
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
|
else
|
|
warn("Camera: no Crosshair object was provided for the camera", debug.traceback())
|
|
end
|
|
end
|
|
end
|
|
|
|
function Camera:ZoomOut(Vignette: Vignette?, Crosshair: Crosshair?)
|
|
ZoomTween:Start(self.Camera, {
|
|
FieldOfView = Camera.FOV.Default
|
|
}, TweenInfo.new(Camera.FOV.Speed.Out, Camera.EffectsEase))
|
|
|
|
if Camera.VignetteEnabled then
|
|
if Vignette then
|
|
Vignette.Screen.Enabled = true
|
|
|
|
VignetteTween:Start(Vignette.Icon, {
|
|
ImageTransparency = 1
|
|
}, TweenInfo.new(Camera.FOV.Speed.Out, Camera.EffectsEase))
|
|
else
|
|
warn("Camera: no Vignette object was provided for the camera", debug.traceback())
|
|
end
|
|
end
|
|
|
|
if Camera.CrosshairEffect then
|
|
if Crosshair then
|
|
VignetteTween:Start(Crosshair.Icon, {
|
|
ImageTransparency = 0
|
|
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
|
else
|
|
warn("Camera: no Crosshair object was provided for the camera", debug.traceback())
|
|
end
|
|
end
|
|
end
|
|
|
|
return Camera |