From c6899c0528b18d4ec5c5b9a608e96747c0b1657a Mon Sep 17 00:00:00 2001
From: min
- Скриптом можно менять, как двигается игрок. Эти команды
- принимают множитель: 1 — обычно, 2 — в два раза
- сильнее, 0.5 — в два раза слабее.
- Скриптом можно менять, как двигается игрок. В JS используем команды-«множители»: 1 — обычно,
+ 2 — в два раза сильнее, 0.5 — в два раза слабее. В Lua скорость и прыжок — это прямые значения
+ в Humanoid (не множители). По умолчанию WalkSpeed=16,
+ JumpPower=50. Пример — «зелье скорости» при касании сферы:
- Персонаж умеет показывать эмоции. Команда
- Персонаж умеет показывать эмоции.
-
-
+
- setSpeed(mul)скорость бега
- setJumpPower(mul)сила прыжка
- setGravityMul(mul)сила притяжения
- setDoubleJump(true)разрешить двойной прыжок
-
- teleport(x,y,z)мгновенно переставить
+
+
+ >}
+ lua={<>
+
+ game.player.setSpeed(mul)скорость бега
+ game.player.setJumpPower(mul)сила прыжка
+ game.player.setGravityMul(mul)сила притяжения
+ game.player.setDoubleJump(true)двойной прыжок
+
+ game.player.teleport(x,y,z)мгновенно переставить
+
+
+ >}
+ />
+ humanoid.WalkSpeed = 32скорость (16 = норма)
+ humanoid.JumpPower = 80сила прыжка (50 = норма)
+ workspace.Gravity = 100гравитация (196 = норма)
+ humanoid:ChangeState(Enum.HumanoidStateType.Jumping)прыгнуть
+
+ hrp.CFrame = CFrame.new(x,y,z)телепорт {`game.self.onTouch(() => {
+ }
game.after(5, () => {
game.player.setSpeed(1);
});
-});`}
+});`}}
+ lua={{`local part = script.Parent
+
+part.Touched:Connect(function(hit)
+ local humanoid = hit.Parent:FindFirstChild("Humanoid")
+ if not humanoid then return end
+
+ -- ускоряем игрока в 2 раза (16 → 32)
+ humanoid.WalkSpeed = 32
+ print("Скорость x2 на 5 секунд!")
+
+ -- зелье исчезает
+ part:Destroy()
+
+ -- через 5 секунд скорость обратно норма
+ task.delay(5, function()
+ humanoid.WalkSpeed = 16
+ end)
+end)`}}
+ />
setSpeed(1). Иначе игрок останется быстрым
- навсегда — а это может сломать твой уровень.
+ Не забывай возвращать скорость обратно. Иначе игрок
+ останется быстрым навсегда — а это может сломать твой уровень.
game.player.playAnimation(имя) проигрывает
- анимацию: 'wave' (помахать),
- 'dance' (танец), 'cheer'
- (радость), 'sit' (сесть).
- game.player.playAnimation(имя) проигрывает
+ анимацию: 'wave' (помахать),
+ 'dance' (танец), 'cheer'
+ (радость), 'sit' (сесть).
+
+ В Lua анимации проигрываются через Animator на Humanoid'е.
+ Roblox-стиль: создать Animation-объект, вызвать
+ Animator:LoadAnimation(anim),
+ потом track:Play().
+
{`// При победе персонаж радуется
+ {`// При победе персонаж радуется
game.player.playAnimation('cheer');
// Через 3 секунды перестать
game.after(3, () => {
game.player.stopAnimation();
-});`}
+});`}}
+ lua={{`local Players = game:GetService("Players")
+local player = Players.LocalPlayer
+local humanoid = player.Character:WaitForChild("Humanoid")
+local animator = humanoid:FindFirstChildOfClass("Animator")
+
+-- Создаём анимацию (упрощённый шаблон — в реальности нужен AnimationId)
+local anim = Instance.new("Animation")
+-- anim.AnimationId = "rbxassetid://..." -- свой Animation ID
+local track = animator:LoadAnimation(anim)
+
+track:Play()
+
+-- Через 3 секунды перестать
+task.delay(3, function()
+ track:Stop()
+end)`}}
+ />
>
),
},
@@ -1873,13 +1934,14 @@ game.after(3, () => {
<>
Твин — это плавное изменение чего-либо за время.
- Если просто переставить объект командой move —
- он телепортируется рывком. А твин плавно доедет
- из точки в точку.
+ Если просто переставить объект — он телепортируется рывком.
+ А твин плавно доедет из точки в точку.
Команда: game.tween(объект, что менять, настройки)
{`// Находим платформу-лифт по имени
+
+ Команда: game.tween(объект, что менять, настройки)
+ {`// Находим платформу-лифт по имени
const lift = game.scene.findOne('Лифт');
// Платформа за 2 секунды плавно поднимается на высоту 10
@@ -1887,27 +1949,65 @@ game.tween(lift, { y: 10 }, {
duration: 2, // длительность в секундах
easing: 'ease' // характер движения
});`}
-
- Твином можно менять позицию (x, y, z),
- поворот, размер, цвет, прозрачность.
-
- Полезные настройки твина:
-
-
- durationсколько секунд длится
- easing'linear' (ровно), 'ease' (плавно), 'bounce' (с отскоком)
- repeatсколько раз повторить
- yoyo: trueдвигаться туда-обратно
- onDoneчто сделать, когда твин закончится
-
-
- {`// Платформа вечно ездит вверх-вниз
+ Полезные настройки твина:
+
+
+ durationсколько секунд длится
+ easing'linear' / 'ease' / 'bounce'
+ repeatсколько раз повторить
+ yoyo: trueдвигаться туда-обратно
+ onDoneчто сделать, когда твин закончится
+
+
+ {`// Платформа вечно ездит вверх-вниз
const plat = game.scene.findOne('Качалка');
game.tween(plat, { y: 8 }, {
duration: 2,
- yoyo: true, // обратно вниз
- repeat: 999 // повторять почти бесконечно
+ yoyo: true,
+ repeat: 999
});`}
+ >}
+ lua={<>
+ В Lua используется TweenService — встроенный
+ сервис Roblox-стиля. Создаёшь TweenInfo и Tween, вызываешь Play.
+ {`local TweenService = game:GetService("TweenService")
+
+-- Находим платформу-лифт по имени
+local lift = workspace:WaitForChild("Лифт")
+
+-- Настройка анимации: 2 сек, плавно
+local info = TweenInfo.new(2, Enum.EasingStyle.Quad)
+
+-- Что менять: новая Position (поднимаем на 10 вверх)
+local goal = { Position = lift.Position + Vector3.new(0, 10, 0) }
+
+-- Создаём и запускаем твин
+local tween = TweenService:Create(lift, info, goal)
+tween:Play()`}
+ Полезные настройки TweenInfo:
+
+
+ 1-й арг — секунды сколько длится
+ EasingStyle Linear / Quad / Bounce / Elastic
+ EasingDirection In / Out / InOut
+ repeatCount сколько раз повторить (-1 = бесконечно)
+ reverses true = туда-обратно
+ tween.Completed:Connect событие «закончен»
+
+
+ {`-- Платформа вечно ездит вверх-вниз
+local plat = workspace:WaitForChild("Качалка")
+local info = TweenInfo.new(
+ 2, -- секунды
+ Enum.EasingStyle.Quad, -- плавно
+ Enum.EasingDirection.InOut,
+ -1, -- бесконечно
+ true -- туда-обратно
+)
+local goal = { Position = plat.Position + Vector3.new(0, 8, 0) }
+TweenService:Create(plat, info, goal):Play()`}
+ >}
+ />
>
),
},
@@ -1918,33 +2018,60 @@ game.tween(plat, { y: 8 }, {
<>
Спавн — создание нового объекта прямо во время игры.
- Команда game.scene.spawn(тип, настройки):
- {`// Создаём золотую монетку-сферу
+
+ Команда game.scene.spawn(тип, настройки):
+ {`// Создаём золотую монетку-сферу
const coin = game.scene.spawn('primitive:sphere', {
x: 5, y: 1, z: 0, // где появится
color: '#ffd700' // золотой цвет
});
game.log('Создали монетку, её адрес:', coin);`}
-
- Тип бывает 'block:трава',
- 'primitive:cube', 'model:tree'.
- Команда возвращает ref — это «адрес» объекта,
- по которому к нему можно обращаться (двигать, удалять).
-
- Удаление объекта:
- {`// удалить сразу
-game.scene.delete(coin);
+
+ Тип бывает 'block:трава',
+ 'primitive:cube', 'model:tree'.
+ Команда возвращает ref — «адрес» объекта,
+ по которому к нему можно обращаться.
+
+ Удаление объекта:
+ {`game.scene.delete(coin); // сразу
+game.scene.deleteAfter(coin, 3); // через 3 секунды`}
+
+ Запоминай ref в переменную. Без адреса
+ ты потом не сможешь объект ни подвинуть, ни удалить.
+
+ >}
+ lua={<>
+ Команда Instance.new("Part") создаёт новый Part:
+ {`-- Создаём золотую монетку-сферу
+local coin = Instance.new("Part")
+coin.Shape = Enum.PartType.Ball
+coin.Size = Vector3.new(1, 1, 1)
+coin.Position = Vector3.new(5, 1, 0)
+coin.BrickColor = BrickColor.new("Bright yellow")
+coin.Anchored = true
+coin.Parent = workspace
-// удалить через 3 секунды
-game.scene.deleteAfter(coin, 3);`}
-
- Запоминай ref в переменную (let coin
- = ...). Без адреса ты потом не сможешь объект
- ни подвинуть, ни удалить.
-
+print("Создали монетку:", coin)`}
+
+ Чтобы объект появился в игре — обязательно ставь
+ .Parent = workspace.
+ Anchored = true — чтобы не падал.
+
+ Удаление объекта:
+ {`coin:Destroy() -- сразу
+
+-- через 3 секунды
+game:GetService("Debris"):AddItem(coin, 3)`}
+
+ Сохраняй ссылку на объект в переменную (local coin = ...).
+ Без неё ты потом не сможешь объект ни подвинуть, ни удалить.
+
+ >}
+ />
>
),
},
@@ -1954,20 +2081,38 @@ game.scene.deleteAfter(coin, 3);`}
body: (
<>
Передвинуть объект скриптом можно несколькими способами:
-
-
- game.scene.move(ref,x,y,z)мгновенно переставить
- game.scene.rotate(ref,угол)повернуть
- game.self.move(x,y,z)скрипт двигает сам себя
- game.tween(...)плавное перемещение (E3)
-
-
+
+
+ game.scene.move(ref,x,y,z)мгновенно переставить
+ game.scene.rotate(ref,угол)повернуть
+ game.self.move(x,y,z)скрипт двигает сам себя
+ game.tween(...)плавное перемещение (E3)
+
+ }
+ lua={
+
+ part.Position = Vector3.new(x,y,z)мгновенно переставить
+ part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(45), 0)повернуть
+ script.Parent.Position = ...скрипт двигает сам себя
+ TweenService:Create(...)плавное перемещение (E3)
+
+
}
+ />
Пример — дверь уезжает вверх и освобождает проход:
- {`const door = game.scene.findOne('Дверь');
+ {`const door = game.scene.findOne('Дверь');
// плавно поднимаем дверь на 6 единиц вверх
-game.tween(door, { y: 6 }, { duration: 1 });`}
+game.tween(door, { y: 6 }, { duration: 1 });`} }
+ lua={{`local TweenService = game:GetService("TweenService")
+local door = workspace:WaitForChild("Дверь")
+
+-- плавно поднимаем дверь на 6 единиц вверх
+local goal = { Position = door.Position + Vector3.new(0, 6, 0) }
+TweenService:Create(door, TweenInfo.new(1), goal):Play()`}}
+ />
>
),
},