→ همه‌ی آموزش‌ها
آموزش 1

اولین obby ات را بساز

یک مسیر مانع‌دار با گدازه، چک‌پوینت، یک سکوی ناپدیدشونده و خط پایان.

رایگان45 دقیقه · مبتدی · Roblox Studio
1
قدم 1 / 10

یک مکان جدید بساز

  1. Roblox Studio را باز کن و وارد شو.
  2. روی New Experience کلیک کن و قالب Baseplate را انتخاب کن.
  3. حالا یک کف خاکستری صاف داری. مسیرت روی آن ساخته می‌شود.

جزئیات بیشتر

  • Roblox Studio یک برنامه‌ی رایگان برای Windows و Mac است. اگر هنوز نصب نیست، از create.roblox.com دانلودش کن و با حساب Roblox خودت وارد شو.
  • قالب Baseplate در فهرست قالب‌های صفحه‌ی شروع است. همان است که یک کف خاکستری خالی نشان می‌دهد.
  • مکان در یک تب باز می‌شود. اسم تب همان اسم مکان توست.
  • روی Mac هر جا این آموزش Ctrl می‌گوید، کلید Cmd را بزن.
نکته. زیاد ذخیره کن، با File → Save to Roblox. Studio نسخه‌های قبلی را نگه می‌دارد و همیشه می‌توانی برگردی.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

2
قدم 2 / 10

سه پنل را یاد بگیر

  1. نمای بزرگ سه‌بعدی وسط صفحه Viewport است. این دنیای بازی توست.
  2. Explorer همه‌ی چیزهای بازی را فهرست می‌کند. Properties تنظیمات چیزی را که انتخاب کرده‌ای نشان می‌دهد.
  3. دوربین را حرکت بده: دکمه‌ی راست موس را نگه دار و دور و بر را ببین، با W A S D پرواز کن، با Q و E پایین و بالا برو.
  4. گم شدی؟ هر Part را انتخاب کن و F را بزن. دوربین می‌پرد سمت آن.

جزئیات بیشتر

  • Explorer و Properties سمت راست پنجره‌اند. Explorer بالاست و Properties زیر آن.
  • روی یک شیء در Viewport کلیک کن تا در Explorer هم پررنگ شود. روی اسمش در Explorer کلیک کن تا در Viewport انتخاب شود.
  • سکوی صافی که یک نشان گرد روی آن است SpawnLocation است. بازیکن‌ها وقتی بازی شروع می‌شود روی آن ظاهر می‌شوند. آن را سر جایش بگذار.
  • اشتباه کردی؟ Ctrl+Z را بزن تا آخرین کارت برگردد. دوباره بزن تا یک قدم دیگر برگردی.
نکته. اگر پنلی نیست، از منوی Window بازش کن. در نسخه‌های قدیمی‌تر در تب View است.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

3
قدم 3 / 10

سکوی شروع را بساز

  1. در تب Home روی Part کلیک کن. یک بلوک خاکستری ظاهر می‌شود.
  2. در Properties مقدار Size را 12, 1, 12 بگذار و اسم Part را Start کن.
  3. Anchored را روشن کن. Part ای که Anchored باشد نه می‌افتد و نه جابه‌جا می‌شود.
  4. با دکمه‌ی Color یک رنگ دلخواه انتخاب کن.

جزئیات بیشتر

  • قطعه‌ی جدید جلوی دوربین ظاهر می‌شود و اسمش در Explorer همان Part است.
  • برای عوض کردن اسمش، یک بار در Explorer رویش کلیک کن و F2 را بزن، بعد Start را بنویس و Enter را بزن.
  • در Properties روی فیلد Size کلیک کن، 12, 1, 12 را بنویس و Enter را بزن. سه عدد، عرض و ارتفاع و عمق‌اند.
  • Anchored یک کادر انتخاب در Properties است. علامت تیک یعنی روشن است.
  • با ابزار Move (Ctrl+2) سکو را کنار SpawnLocation بگذار تا بازیکن‌ها بتوانند رویش راه بروند.
اشتباه رایج. فراموش کردن Anchored. وقتی داری ویرایش می‌کنی Part خوب به نظر می‌رسد، ولی وقتی بازی شروع می‌شود توی خلأ می‌افتد.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

4
قدم 4 / 10

پرش‌ها را اضافه کن

  1. Start را انتخاب کن و با Ctrl+D کپی‌اش کن. کپی را با ابزار Move (Ctrl+2) جلو بکش.
  2. با ابزار Scale (Ctrl+3) آن را کوچک‌تر کن. اندازه‌ی 6, 1, 6 خوب است.
  3. بین سکوها 5 تا 7 studs فاصله بگذار. تا وقتی 6 تا 8 سکو داشته باشی تکرار کن.
  4. بعضی سکوها را کمی بالاتر ببر تا مسیر رو به بالا برود.

جزئیات بیشتر

  • کپی دقیقاً روی اصل ظاهر می‌شود، برای همین انگار هیچ اتفاقی نیفتاده است. فلش آبی یا قرمز ابزار Move را بکش تا کپی بیرون بلغزد.
  • با ابزار Scale یکی از گوی‌های کوچک روی قطعه را بکش تا اندازه‌اش عوض شود. می‌توانی اندازه را در Properties هم بنویسی.
  • فیلد Position در Properties نشان می‌دهد قطعه کجاست. عددهای دو سکو را مقایسه کن تا فاصله‌ی بینشان را اندازه بگیری.
  • هر سکو باید Anchored باشد. کپی یک قطعه‌ی ثابت‌شده هم ثابت است، پس این را فقط برای قطعه‌هایی که تازه ساخته‌ای بررسی کن.
  • F5 را بزن تا پرش‌ها را خودت امتحان کنی و Shift+F5 را بزن تا متوقف شود. این کار را بعد از هر دو یا سه سکو بکن.
نکته. شخصیت پیش‌فرض 7.2 studs بالا می‌پرد و حدود 8 studs جلو می‌رود. فاصله‌ی بیشتر از 8 studs تقریباً غیرممکن است.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

5
قدم 5 / 10

گدازه‌ای بساز که بازیکن را برگرداند

  1. یک Part جدید بین دو سکو بگذار. قرمزش کن، Material را Neon بگذار، Anchored را روشن کن و اسمش را Lava بگذار.
  2. در Explorer موس را روی Lava ببر، روی دکمه‌ی + کلیک کن و Script را انتخاب کن.
  3. خطی را که از قبل آنجاست پاک کن و این کد را بچسبان.
Lava > Script
local lava = script.Parent

lava.Touched:Connect(function(hit)
	local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
	if humanoid then
		humanoid.Health = 0
	end
end)

هر بخش چه کار می‌کند

  • script.Parent همان Part ای است که اسکریپت داخلش است. اینجا همان گدازه است.
  • Touched هر بار که چیزی به Part بخورد اجرا می‌شود. hit همان چیزی است که خورده، مثلاً یک پا.
  • hit.Parent کل شخصیت است. اگر Humanoid داشته باشد یعنی بازیکن است، پس اسکریپت Health را 0 می‌کند.

جزئیات بیشتر

  • Material یک فهرست در Properties است. رویش کلیک کن و Neon را انتخاب کن. Neon قطعه را درخشان می‌کند.
  • وقتی Script را اضافه می‌کنی در یک تب جدید باز می‌شود و یک خط کد در آن است. داخل کد کلیک کن، Ctrl+A را بزن تا همه‌چیز انتخاب شود و Ctrl+V را بزن تا رویش بچسباند.
  • با کلیک روی تبی که اسم مکانت را دارد به دنیایت برگرد.
  • برای آزمایش: F5 را بزن و داخل گدازه برو. شخصیتت از هم می‌پاشد و سر شروع برمی‌گردد.
  • گدازه را پهن و صاف بساز، مثلاً Size 12, 1, 6، و کمی پایین‌تر از سکوها بگذار تا پرش اشتباه داخل آن بیفتد.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

6
قدم 6 / 10

چک‌پوینت‌ها را اضافه کن

  1. در Explorer موس را روی Workspace ببر، روی + کلیک کن و یک Folder اضافه کن. اسمش را Checkpoints بگذار.
  2. سه Part با Anchored روشن در طول مسیر بگذار و آن‌ها را بکش داخل پوشه. اسم‌هایشان را 1 و 2 و 3 بگذار. Part شماره‌ی 1 روی سکوی شروع می‌رود.
  3. موس را روی ServerScriptService ببر، روی + کلیک کن و یک Script اضافه کن. این کد را بچسبان.
ServerScriptService > Script
local Players = game:GetService("Players")
local checkpoints = workspace:WaitForChild("Checkpoints")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local stage = Instance.new("IntValue")
	stage.Name = "Stage"
	stage.Value = 1
	stage.Parent = stats

	player.CharacterAdded:Connect(function(character)
		local root = character:WaitForChild("HumanoidRootPart")
		local point = checkpoints:FindFirstChild(tostring(stage.Value))
		if point then
			task.wait(0.1)
			root.CFrame = point.CFrame + Vector3.new(0, 4, 0)
		end
	end)
end)

for _, point in ipairs(checkpoints:GetChildren()) do
	point.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		local stats = player and player:FindFirstChild("leaderstats")
		if not stats then return end

		local number = tonumber(point.Name)
		if number == stats.Stage.Value + 1 then
			stats.Stage.Value = number
		end
	end)
end

هر بخش چه کار می‌کند

  • leaderstats یک اسم پوشه‌ی ویژه است. مقدارهای داخلش در فهرست بازیکن‌ها نشان داده می‌شوند، پس همه Stage ات را می‌بینند.
  • وقتی شخصیت ظاهر می‌شود، اسکریپت آن را به چک‌پوینتی می‌برد که اسمش با Stage بازیکن یکی است.
  • با لمس چک‌پوینت، Stage فقط وقتی بالا می‌رود که همان چک‌پوینت بعدی باشد. این جلوی رد شدن از مراحل را می‌گیرد.

جزئیات بیشتر

  • Folder شیءهای دیگر را نگه می‌دارد، مثل یک پوشه در کامپیوتر. خودش در بازی کاری نمی‌کند.
  • برای کشیدن یک قطعه داخل پوشه، اسمش را در Explorer روی اسم Checkpoints بکش و رها کن. بعد قطعه یک قدم به داخل، زیر پوشه، می‌نشیند.
  • قطعه‌های چک‌پوینت را نازک و پهن بساز، مثلاً Size 6, 0.4, 6، و روی سکوها بگذار. رنگ متفاوت کمک می‌کند بازیکن‌ها آن‌ها را ببینند.
  • برای آزمایش: F5 را بزن و به فهرست بازیکن‌ها در گوشه‌ی بالا سمت راست نگاه کن. Stage 1 را نشان می‌دهد. چک‌پوینت 2 را لمس کن تا به 2 عوض شود.
  • چک‌پوینت‌ها را باید به ترتیب لمس کرد. لمس 3 قبل از 2 کاری نمی‌کند.
اشتباه رایج. اسم Part ها را Checkpoint1 یا One گذاشتن. اسکریپت دنبال اسم‌های دقیق 1 و 2 و 3 می‌گردد.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

7
قدم 7 / 10

یک سکوی ناپدیدشونده بساز

  1. یک سکو از وسط مسیر انتخاب کن و یک Script به آن اضافه کن.
  2. این کد را بچسبان و Play را بزن تا چشمک زدنش را ببینی.
Platform > Script
local platform = script.Parent

while true do
	task.wait(2)
	platform.Transparency = 1
	platform.CanCollide = false

	task.wait(2)
	platform.Transparency = 0
	platform.CanCollide = true
end

هر بخش چه کار می‌کند

  • while true do برای همیشه تکرار می‌کند.
  • task.wait(2) به مدت 2 ثانیه صبر می‌کند.
  • Transparency برابر 1 Part را نامرئی می‌کند. CanCollide برابر false باعث می‌شود بازیکن‌ها از آن رد شوند و بیفتند.

جزئیات بیشتر

  • برای اضافه کردن Script، موس را روی اسم سکو در Explorer ببر، روی + کلیک کن و Script را انتخاب کن، درست مثل کاری که برای گدازه کردی.
  • سکو 2 ثانیه دیده می‌شود و 2 ثانیه غیب است. بازیکن‌ها باید زمان پرششان را درست حساب کنند.
  • عدد اول مدت دیده شدن سکو است. عدد دوم مدتی است که سکو غیب می‌ماند.
  • این اسکریپت را داخل سکوی شروع یا چک‌پوینت نگذار، وگرنه بازیکن‌ها همان لحظه‌ی رسیدن می‌افتند.
نکته. آن دو عدد را عوض کن تا سکو سریع‌تر یا کندتر شود.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

8
قدم 8 / 10

خط پایان را بساز

  1. یک Part بزرگ با Anchored روشن آخر مسیر بگذار و اسمش را Finish بگذار. طلایی‌اش کن تا بازیکن‌ها هدف را ببینند.
  2. یک Script به Finish اضافه کن و این کد را بچسبان.
Finish > Script
local Players = game:GetService("Players")
local finish = script.Parent
local cooldown = {}

finish.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or cooldown[player] then return end

	cooldown[player] = true
	stats.Stage.Value = 1
	player:LoadCharacter()

	task.wait(2)
	cooldown[player] = nil
end)

هر بخش چه کار می‌کند

  • GetPlayerFromCharacter پیدا می‌کند کدام بازیکن به خط پایان خورده.
  • جدول cooldown جلوی این را می‌گیرد که کد در یک ثانیه چند بار اجرا شود.
  • Stage دوباره 1 می‌شود و LoadCharacter بازیکن را برای یک دور دیگر به شروع می‌فرستد.

جزئیات بیشتر

  • برای طلایی کردنش، روی فیلد Color در Properties کلیک کن و یک رنگ زرد انتخاب کن. Material Neon آن را برّاق می‌کند.
  • Size 12, 1, 12 برای پایان مناسب است. آن را بعد از آخرین پرش و کمی بالاتر از بقیه بگذار.
  • برای آزمایش: F5 را بزن، مسیر را تمام کن و روی قطعه‌ی طلایی بایست. سر شروع برمی‌گردی و Stage دوباره 1 را نشان می‌دهد.
  • علت مکث 2 ثانیه‌ای این است که یک قدم قطعه را چندین بار لمس می‌کند.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

9
قدم 9 / 10

بازی‌ات را امتحان کن

  1. F5 را بزن تا بازی شروع شود. کل مسیر را از شروع تا پایان برو.
  2. عمداً توی گدازه بیفت. باید سر آخرین چک‌پوینتت برگردی.
  3. برای متوقف کردن Shift+F5 را بزن.
  4. پنجره‌ی Output را از منوی Window باز کن. نوشته‌ی قرمز یعنی اسکریپت خطا دارد و شماره‌ی خط را هم نشان می‌دهد.

جزئیات بیشتر

  • F5 بازی را با شخصیت تو داخلش شروع می‌کند. وقتی بازی اجرا می‌شود نوار ابزار عوض می‌شود.
  • تغییرهایی که وقتی بازی اجرا می‌شود می‌دهی، با توقف از بین می‌روند. همیشه اول Shift+F5 را بزن، بعد ویرایش کن.
  • در پنجره‌ی Output روی یک خط قرمز کلیک کن تا Studio اسکریپت را در خطی که خطا دارد باز کند.
  • وقتی چیزی کار نمی‌کند سه چیز را بررسی کن: اسم قطعه، جای اسکریپت و اینکه Anchored روشن است یا نه.
اشتباه رایج. سکویی با شروع بازی می‌افتد: Anchored خاموش است. با لمس Part هیچ اتفاقی نمی‌افتد: اسکریپت توی Part اشتباهی است یا اسمی غلط تایپ شده.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

10
قدم 10 / 10

منتشرش کن

  1. File → Publish to Roblox را انتخاب کن. به بازی یک اسم و یک توضیح کوتاه بده.
  2. در سایت Creator Hub بازی‌ات را باز کن و پرسشنامه‌ی Maturity را پر کن. Roblox قبل از اینکه بقیه بتوانند بازی کنند به آن نیاز دارد.
  3. بازی را روی Public بگذار و لینکش را برای یک دوست بفرست.

جزئیات بیشتر

  • بار اول که منتشر می‌کنی، Studio اسم و توضیح می‌خواهد. روی Create کلیک کن. بعد از آن File → Publish to Roblox تازه‌ترین تغییرهایت را می‌فرستد.
  • Creator Hub همان وب‌سایت create.roblox.com است. با همان حساب وارد شو و در فهرست روی بازی‌ات کلیک کن.
  • پرسش‌نامه‌ی Maturity می‌پرسد در بازی‌ات چه چیزهایی هست. راست بگو. یک Obby مثل این خشونت و چیز ترسناک ندارد.
  • ممکن است Roblox قبل از عمومی شدن بازی چیزهای بیشتری بخواهد، مثلاً تأیید سن حساب. صفحه می‌گوید چه چیزی کم است.
  • اگر زیر 18 سال داری، این قدم را با یکی از والدینت انجام بده.
نکته. از یک دوست بخواه بازی کند و تو تماشا کن. جاهایی که گیر می‌کند اولین چیزهایی هستند که باید درست کنی.
این قدم برای من کار نمی‌کند

اول این سه چیز را بررسی کن

  • اسم هر قطعه و اسکریپت دقیقاً مثل آموزش است، با همان حروف بزرگ.
  • اسکریپت داخل شیء درست است. به برچسب بالای کادر کد نگاه کن.
  • پنجره‌ی Output را از منوی Window باز کن. متن قرمز اسکریپت و خطی را که مشکل دارد نشان می‌دهد.

هنوز گیر کرده‌ای؟ برای ما بنویس ←

حالا خودت تغییرش بده

  • یک چک‌پوینت چهارم اضافه کن. باید اسمش را چه بگذاری؟
  • سه سکوی ناپدیدشونده بساز که با سرعت‌های مختلف چشمک بزنند.
  • گدازه را طوری عوض کن که فقط نصف Health را کم کند. راهنمایی: humanoid.Health = humanoid.Health - 50