Advertisement
SpriteSpirit

CameraScript

Mar 9th, 2025 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.52 KB | Gaming | 0 0
  1. local player = game.Players.LocalPlayer
  2. local runService = game:GetService('RunService')
  3. local camera = workspace.CurrentCamera
  4.  
  5. -- Переменная для хранения текущего соединения с RenderStep
  6. local cameraConnection
  7.  
  8. -- Функция для настройки камеры
  9. local function setupCamera(character)
  10.     local root = character:WaitForChild('HumanoidRootPart') -- Ждем появления HumanoidRootPart
  11.     if not root then return end
  12.  
  13.     -- Настраиваем камеру
  14.     camera.CameraSubject = root
  15.     camera.CameraType = Enum.CameraType.Scriptable
  16.     camera.FieldOfView = 50
  17.  
  18.     -- Если уже есть активное соединение с RenderStep, отключаем его
  19.     if cameraConnection then
  20.         runService:UnbindFromRenderStep('Camera')
  21.     end
  22.  
  23.     -- Функция для обновления позиции камеры
  24.     local function onUpdate()
  25.         if character and root then
  26.             camera.CFrame = CFrame.new(root.Position) * CFrame.new(0, 1, 40)
  27.         end
  28.     end
  29.  
  30.     -- Привязываем обновление камеры к RenderStep
  31.     cameraConnection = runService:BindToRenderStep('Camera', Enum.RenderPriority.Camera.Value, onUpdate)
  32. end
  33.  
  34. -- Обработка появления персонажа
  35. player.CharacterAdded:Connect(setupCamera)
  36.  
  37. -- Если персонаж уже существует (например, после загрузки игры), настраиваем камеру
  38. if player.Character then
  39.     setupCamera(player.Character)
  40. end
  41.  
  42. --[[
  43. Что изменено:
  44.  
  45. Тип камеры:
  46. Чтобы полностью управлять камерой через скрипт, нужно использовать Enum.CameraType.Scriptable. Это отключит автоматическое управление камерой и позволит скрипту полностью контролировать её поведение.
  47.  
  48. Добавлено ожидание HumanoidRootPart:
  49. Используется WaitForChild, чтобы дождаться появления HumanoidRootPart. Это важно, так как после смерти персонаж пересоздается, и HumanoidRootPart может появиться не сразу.
  50.  
  51. Очистка старого BindToRenderStep:
  52. Если персонаж умирает, и появляется новый, старый BindToRenderStep отключается с помощью UnbindFromRenderStep. Это предотвращает множественные вызовы onUpdate.
  53.  
  54. Переменная cameraConnection:
  55. Добавлена переменная для хранения текущего соединения с RenderStep, чтобы его можно было отключить при необходимости.
  56.  
  57. Проверка существующего персонажа:
  58. Если персонаж уже существует (например, при загрузке игры), камера настраивается сразу.
  59.  
  60. Как это работает:
  61. Когда у игрока появляется новый персонаж (например, после смерти), вызывается функция setupCamera.
  62. Внутри setupCamera камера настраивается на слежение за новым HumanoidRootPart.
  63. Если персонаж умирает, старый BindToRenderStep отключается, и камера начинает следить за новым персонажем.
  64. ]]
  65.  
Tags: Roblox
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement