Roblox · Тайкун · урок 8
Клик по колесу — оно крутится несколько секунд и останавливается на случайном секторе; выигрыш падает в кассу. Игра публикуется.
Синим — что добавляем на этом уроке.
ServerStorage └─ TycoonTemplate (Model) └─ Decoration_Items (Folder) └─ FortuneWheel (Model) ├─ Wheel (Part) — цилиндр, Anchored, Orientation 0, 0, 0 │ ├─ Decal (Decal) — картинка секторов, Face = Right │ ├─ ClickDetector (ClickDetector) │ └─ FortuneWheel (Script) └─ Line (Part) — стрелка над колесом
Где: … → FortuneWheel → Wheel · Script
Зачем: Крутит колесо всегда вперёд на несколько оборотов и кладёт выигрыш выпавшего сектора в кассу.
-- цилиндр колеса
local wheel = script.Parent
-- клик по колесу
local clicker = wheel:WaitForChild("ClickDetector")
-- плавная анимация
local TS = game:GetService("TweenService")
-- выигрыши по секторам, по кругу от верхнего
local rewards = {10, 2, 15, 5, 20, 7, 10, 5}
-- угол одного сектора
local sector = 360 / #rewards
-- колесо крутится?
local spinning = false
-- сколько градусов колесо уже повернулось за всё время
local turned = 0
-- кликнули по колесу
clicker.MouseClick:Connect(function(player)
-- уже крутится — ждём
if spinning then return end
-- производство игрока
local tycoon = workspace.Tycoons:FindFirstChild(player.Name)
-- производства нет — выигрыш класть некуда
if not tycoon then return end
-- крутим
spinning = true
-- заранее выбираем выигрыш
local rewardIndex = math.random(1, #rewards)
-- угол этого сектора, не на границе
local angle = (rewardIndex - 1) * sector + (math.random() - 0.5) * sector * 0.8
-- вперёд на 3–8 оборотов и до нужного сектора
local target = turned - turned % 360 + 360 * math.random(3, 8) + angle
-- запоминаем, где остановится
turned = target
-- 3–6 секунд, к концу замедляется
local tweenInfo = TweenInfo.new(math.random(3, 6), Enum.EasingStyle.Quint, Enum.EasingDirection.Out)
-- поворот вокруг оси X
local tween = TS:Create(wheel, tweenInfo, {Rotation = Vector3.new(target, 0, 0)})
-- крутим
tween:Play()
-- ждём остановки
tween.Completed:Wait()
-- выигрыш — в кассу игрока
tycoon.Values.Gain.Value += rewards[rewardIndex]
-- можно крутить снова
spinning = false
-- конец обработчика
end)Запусти Play (или Run) и убедись: