Top.Mail.Ru
Ответы

Скриптинг роблокс студио

Как сделать чтобы при нажатии на кнопку камера игрока понижалась до уровня ног

По дате
По рейтингу
Аватар пользователя
Мудрец
4мес

Чтобы камера опускалась до уровня ног при нажатии на кнопку, нужно изменить свойство Camera.CFrame (координаты и ориентацию камеры).

1. Создайте кнопку
Добавьте Part (например, кирпич) в игру.

Назовите его Button.

Сделайте его кликабельным, добавив ClickDetector:

Выберите Button.

В окне Properties найдите ClickDetector и добавьте его.

2. Создайте скрипт
Добавьте Script в Button:

Выберите Button.

В окне Explorer нажмите + и выберите Script.

Вставьте следующий код:

local button = script.Parent
local clickDetector = button:FindFirstChild("ClickDetector")

-- Функция, которая вызывается при нажатии на кнопку
local function onButtonClick(player)
-- Получаем камеру игрока
local camera = workspace.CurrentCamera

-- Получаем позицию ног игрока
local character = player.Character
if character then
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
local leftLeg = character:FindFirstChild("Left Leg")
local rightLeg = character:FindFirstChild("Right Leg")

if humanoidRootPart and leftLeg and rightLeg then
-- Вычисляем среднюю позицию между ногами
local legsPosition = (leftLeg.Position + rightLeg.Position) / 2
legsPosition = legsPosition - Vector3.new (0, 2, 0) -- Немного опускаем камеру

-- Меняем позицию камеры
camera.CFrame = CFrame.new (legsPosition, humanoidRootPart.Position)
end
end
end

-- Подключаем функцию к событию ClickDetector
clickDetector.MouseClick:Connect(onButtonClick)

Чтобы камера двигалась плавно, можно использовать TweenService:

local TweenService = game:GetService("TweenService")

local function onButtonClick(player)
local camera = workspace.CurrentCamera
local character = player.Character
if character then
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
local leftLeg = character:FindFirstChild("Left Leg")
local rightLeg = character:FindFirstChild("Right Leg")

if humanoidRootPart and leftLeg and rightLeg then
local legsPosition = (leftLeg.Position + rightLeg.Position) / 2
legsPosition = legsPosition - Vector3.new (0, 2, 0)

-- Создаем Tween для плавного перемещения камеры
local tweenInfo = TweenInfo.new (1, Enum.EasingStyle.Linear)
local tween = TweenService:Create(camera, tweenInfo, {CFrame = CFrame.new (legsPosition, humanoidRootPart.Position)})
tween:Play()
end
end
end

clickDetector.MouseClick:Connect(onButtonClick)

Можно добавить вторую кнопку или условие для возврата камеры в стандартное положение.