2.07M
Category: programmingprogramming

Урок 3

1.

Studio

2.

Телепортация
Еще один интересный элемент – это моментальное перемещение персонажа в
определенную точку пространства. Такое стремительное перемещение обычно
называют телепортацией.
Чтобы рассмотреть это свойство, сделаем игровой уровень с платформами,
расположенными на больших расстояниях друг от друга и в разных точках
пространства. Откроем новый пустой игровой проект и сразу удалим Baseplate.
Создадим 5 цветных платформ размером (10,1,10). Все платформы должны
быть закреплены Anchored.

3.

Телепортация
Теперь приступим к созданию скрипта.

4.

Переменные
Наши платформы в иерархии подписываем как Tele1-Tele5. Ищем платформы. Мы
говорим: «Запомни, где находятся платформы Tele1–Tele5»
local Tele1 = game.Workspace.Tele1
local Tele2 = game.Workspace.Tele2
local Tele3 = game.Workspace.Tele3
local Tele4 = game.Workspace.Tele4
local Tele5 = game.Workspace.Tele5
Теперь скрипт знает, где они.
Защита от бесконечного телепорта
local canTeleport = true
Это как светофор:
True-можно телепортироваться
False-ждем
Нужно, чтобы игрок не телепортировался 100 раз подряд.

5.

Функция телепорта
local function tp(hit, where)
Как это работает?
hit- что коснулось (нога, рука)
where-куда телепортировать
Проверка: игрок ли это??
if hit.Parent:FindFirstChild("Humanoid") and canTeleport then
Если оба условия верны — идём дальше и закрываем телепорт.
Ждем 1 секунду.
canTeleport = false
wait(1)

6.

Телепортируем игрока
hit.Parent:MoveTo(where.Position + Vector3.new(0, 3, 0))
И ждем еще секунду
wait(1)
И открываем телепорт снова
canTeleport = true
hit.Parent — весь игрок
MoveTo — переместить
Where.Position — позиция платформы
Vector3.new(0, 3, 0)) — чуть выше, чтобы не застрял

7.

Подключаем платформы
Tele1.Touched:Connect(function(hit)
tp(hit, Tele2)
end)
«Когда Tele1 тронули → телепортировать на Tele2»
Платформа
Куда телепорт
Tele1
Tele2
Tele2
Tele3
Tele3
Tele4
Tele4
Tele5
Tele5
Tele1

8.

Финальный код
local Tele1 = game.Workspace.Tele1
local Tele2 = game.Workspace.Tele2
local Tele3 = game.Workspace.Tele3
local Tele4 = game.Workspace.Tele4
local Tele5 = game.Workspace.Tele5
Tele1.Touched:Connect(function(hit)
tp(hit, Tele2)
end)
Tele2.Touched:Connect(function(hit)
tp(hit, Tele3)
end)
local canTeleport = true
local function tp(hit, where)
if hit.Parent:FindFirstChild("Humanoid") and
canTeleport then
canTeleport = false
wait(1)
hit.Parent:MoveTo(where.Position + Vector3.new(0,
3, 0))
wait(1)
canTeleport = true
end
end
Tele3.Touched:Connect(function(hit)
tp(hit, Tele4)
end)
Tele4.Touched:Connect(function(hit)
tp(hit, Tele5)
end)
Tele5.Touched:Connect(function(hit)
tp(hit, Tele1)
end)

9.

Практика «Лабиринт»
Вам нужно построить лабиринт, из которого игрок сможет выбраться. В лабиринте обязательно должен
быть старт, с которого начинается путь, и финиш, до которого нужно добраться. Без финиша игра
считается незаконченной.
Внутри лабиринта необходимо добавить магические платформы. Одна платформа должна давать игроку
скорость — когда игрок на неё наступает, он начинает бегать быстрее. Вторая платформа должна давать
высокий прыжок — наступив на неё, игрок сможет прыгать выше обычного. Третья платформа должна
быть телепортом — она переносит игрока в другое место лабиринта. Все магические платформы должны
работать. В конце игрок должен дойти до финиша и понять, что он победил.

10.

Платформа со скоростью
Добавить
платформу,
увеличивать скорость.
которая
будет
script.Parent.Touched:Connect(function(hit)
local humanoid =
hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = 50
wait(4)
humanoid.WalkSpeed = 10
end
end)

11.

Платформа с телепортом
Добавить платформу, которая телепортировать
local Tele1 = game.Workspace.Tele1
local Tele2 = game.Workspace.Tele2
персонажа на другую платформу.
local canTeleport = true
local function tp(hit, where)
if hit.Parent:FindFirstChild("Humanoid") and canTeleport then
canTeleport = false
wait(1)
hit.Parent:MoveTo(where.Position + Vector3.new(0, 3, 0))
wait(1)
canTeleport = true
end
end
Tele1.Touched:Connect(function(hit)
tp(hit, Tele2)
end)

12.

Платформа с прыжком
Добавить
платформу,
увеличивать прыжок.
которая
будет
script.Parent.Touched:Connect(function(hit)
local humanoid =
hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.JumpPower = 100
end
end)
Нужно включить UseJumpPower
Explorer
2.Нажми StarterPlayer
3.Найди свойство UseJumpPower
4.Поставь true
1.Открой

13.

Фальшивая стена
local part = script.Parent
Добавить
платформу,
где
проходить сквозь МИГАЮЩЕЙ.
можно
будет
while true do
part.Transparency = 0.3
part.CanCollide = true
wait(2) -- видно 2 секунды
part.Transparency = 1
part.CanCollide = false
wait(2) -- невидимо 2 секунды
end
local part = script.Parent
local solidTime = 3
local passTime = 2
while true do
part.CanCollide = true
wait(solidTime)
Добавить платформу, где можно будет проходить сквозь
part.CanCollide = false
wait(passTime)
ОБЫЧНОЙ СТЕНЫ .
end

14.

Убивающая платформа
script.Parent.Touched:Connect(function(hit)
local humanoid =
hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)

15.

Выход из лабиринта (финиш)
Открываем папку StarterGui-ScreenGui и сразу
меняем название, например, WinGui. Далее для
него добавляем TextLabel и меняем текст,
который появится при победе.
ОБЯЗАТЕЛЬНО! Убрать Visible галочку, вначале
нашей
надписи
не
Скрипт для платформы.
должно
быть.
script.Parent.Touched:Connect(function(hit)
local player =
game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
local gui =
player.PlayerGui:FindFirstChild("WinGui")
if gui then
gui.TextLabel.Visible = true
end
end
end)
English     Русский Rules