Створення об’єкта підсилення, яке дозволяє проходити крізь стіни

Щоб створити підсилення, яке дозволяє проходити крізь стіни, можна використати зміну Collision у HumanoidRootPart або встановлення CanCollide = false для стін. 

Ось покрокова інструкція:


🔹 1. Створення об’єкта підсилення

  1. Встав новий Part (це буде підсилення).
  2. Встанови його розмір, колір, ефекти (наприклад, світіння).
  3. Додай Script всередину об’єкта.

🔹 2. Написання скрипта для підсилення

Встав цей код у Script, що всередині підсилення:

local powerUp = script.Parent -- Підсилення
local duration = 5 -- Час дії ефекту (у секундах) local function onTouch(otherPart) local character = otherPart.Parent local humanoid = character:FindFirstChild("Humanoid") if humanoid then local rootPart = character:FindFirstChild("HumanoidRootPart") if rootPart then -- Вимикаємо колізії rootPart.CanCollide = false -- Додаємо візуальний ефект (необов’язково) local glow = Instance.new("PointLight", rootPart) glow.Brightness = 2 glow.Range = 10 -- Видаляємо підсилення після активації powerUp:Destroy() -- Через кілька секунд повертаємо колізії task.wait(duration) rootPart.CanCollide = true glow:Destroy() end end end powerUp.Touched:Connect(onTouch)

🔹 3. Налаштування стін

Щоб стіни не блокували гравця:

  1. Вибери всі стіни, зайди в Properties.
  2. Вимкни CanTouch (але залиш CanCollide = true).
  3. Це дозволить зміні CanCollide гравця впливати на проходження через стіни.

🔹 4. Перевірка гри

Запусти Play (F5) і протестуй, чи можеш ти проходити через стіни після торкання підсилення.


Другий варіант коду:

local powerUp = script.Parent  -- Підсилення
local duration = 5  -- Час дії ефекту (у секундах)
local function setCollisions(character, state)
    for _, part in ipairs(character:GetChildren()) do
        if part:IsA("BasePart") then
            part.CanCollide = state
        end
    end
end
local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChild("Humanoid")
    
    if humanoid then
        -- Вимикаємо колізії для всіх частин персонажа
        setCollisions(character, false)
        -- Додаємо візуальний ефект
        local rootPart = character:FindFirstChild("HumanoidRootPart")
        if rootPart then
            local glow = Instance.new("PointLight")
            glow.Brightness = 2
            glow.Range = 10
            glow.Parent = rootPart
        end
        
        -- Видаляємо підсилення після активації
        powerUp:Destroy()
        
        -- Через кілька секунд повертаємо колізії
        task.wait(duration)
        setCollisions(character, true)
        if rootPart then
            rootPart:FindFirstChildOfClass("PointLight"):Destroy()
        end
    end
end


powerUp.Touched:Connect(onTouch)



Створення рівня з водою, що піднімається

Щоб створити рівень з водою, що піднімається, потрібно зробити об'єкт-«воду» і написати скрипт, який поступово підніматиме її.



🔹 1. Створення води

  1. Додай Part – це буде вода.
  2. Зміни його властивості:
    • Transparency = 0.5 (щоб виглядало як вода).
    • Material = "Glass" або "ForceField".
    • CanCollide = false (щоб гравці могли в неї занурюватися).
    • Anchor = true (щоб не падала).
  3. Перемісти її під лабіринт, де вона стартуватиме.

🔹 2. Написання скрипта для підйому води

Додай Script всередину об'єкта води та встав цей код:

local water = script.Parent local riseSpeed = 2 -- Швидкість підйому (студійні одиниці в секунду) local maxHeight = 50 -- Максимальна висота, на яку підніметься вода local waitTime = 5 -- Час перед стартом підйому wait(waitTime) -- Затримка перед стартом while water.Position.Y < maxHeight do water.Position = water.Position + Vector3.new(0, riseSpeed * 0.1, 0) -- Піднімаємо воду wait(0.1) -- Маленька затримка для плавного підйому end

🔹 3. Налаштування гравця (додатково)

Щоб гравці втрачали здоров'я, коли занурюються:

  1. Додай в Script перевірку дотику:
water.Touched:Connect(function(hit) local character = hit.Parent local humanoid = character:FindFirstChild("Humanoid") if humanoid then while humanoid.Health > 0 and character.PrimaryPart.Position.Y < water.Position.Y do humanoid.Health = humanoid.Health - 5 -- Втрати здоров'я wait(1) end end end)

🔹 4. Перевірка гри

  1. Запусти Play (F5) і переконайся, що вода поступово піднімається.
  2. Якщо потрібно, зміни швидкість або максимальну висоту.

🔹 Що ще можна додати?
✅ Плавання гравців (через BodyVelocity).
✅ Таймер на екрані до початку підйому.
✅ Кнопку, що уповільнює або прискорює підняття води.