← บทเรียนทั้งหมด
บทเรียนที่ 3

สร้าง simulator แรกของเธอ

คลิกคริสตัลเพื่อเก็บพลัง ขายพลังเป็นเหรียญ และซื้อของอัปเกรดที่ทำให้ทุกคลิกแรงขึ้น

ฟรี50 นาที · มือใหม่ · Roblox Studio
1
ขั้นที่ 1 / 8

ตั้งค่าสถานที่

  1. เปิด Roblox Studio คลิก New Experience แล้วเลือกเทมเพลต Baseplate
  2. เธอจะสร้างสามอย่างบนพื้น: คริสตัลไว้คลิก แผ่นสำหรับขาย และแผ่นสำหรับซื้อของอัปเกรด
  3. เว้นระยะระหว่างกันประมาณ 20 studs ผู้เล่นจะได้ต้องเดิน

ดูรายละเอียดเพิ่ม

  • เทมเพลต Baseplate อยู่ในรายการเทมเพลตบนหน้าจอเริ่มต้น
  • ช่อง Position ใน Properties บอกว่าพาร์ตอยู่ที่ไหน พาร์ตสองชิ้นที่ตัวเลขตัวแรกต่างกัน 20 จะยืนห่างกัน 20 studs
  • วางสามอย่างนี้ไว้ใกล้ SpawnLocation ซึ่งเป็นแพลตฟอร์มที่ผู้เล่นโผล่ขึ้นมา
  • ถ้าใช้ Mac ให้ใช้ปุ่ม Cmd ทุกครั้งที่บทเรียนนี้บอกว่า Ctrl
เคล็ดลับ. วาดผังบนกระดาษก่อน simulator จะเล่นสนุกเมื่อทางเดินระหว่างจุดคลิก จุดขาย และจุดอัปเกรดไม่ไกลเกินไป
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

2
ขั้นที่ 2 / 8

สร้างสถิติผู้เล่น

  1. เลื่อนเมาส์ไปที่ ServerScriptService คลิก + แล้วเพิ่ม Script ตั้งชื่อว่า Stats
  2. ลบบรรทัดที่มีอยู่แล้วออก แล้ววางโค้ดนี้
  3. กด Play รายชื่อผู้เล่นจะแสดง Power 0 และ Coins 0
ServerScriptService > Stats
local Players = game:GetService("Players")

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

	for _, name in ipairs({"Power", "Coins"}) do
		local value = Instance.new("IntValue")
		value.Name = name
		value.Parent = stats
	end

	local multiplier = Instance.new("IntValue")
	multiplier.Name = "Multiplier"
	multiplier.Value = 1
	multiplier.Parent = player
end)

แต่ละส่วนทำอะไร

  • ลูปสร้างสองค่าด้วยโค้ดชุดเดียว: Power และ Coins
  • Multiplier คือจำนวนพลังที่ได้จากการคลิกหนึ่งครั้ง ค่าเริ่มต้นคือ 1
  • Multiplier อยู่ที่ตัวผู้เล่น ไม่ได้อยู่ใน leaderstats จึงไม่แสดงในรายชื่อผู้เล่น

ดูรายละเอียดเพิ่ม

  • เมื่อคลิก + ให้พิมพ์คำว่า Script เพื่อหาให้เร็ว
  • สคริปต์จะเปิดในแท็บใหม่ คลิกในโค้ด กด Ctrl+A แล้วกด Ctrl+V เพื่อแทนที่ทั้งหมด
  • เปลี่ยนชื่อสคริปต์ใน Explorer ด้วย F2 ชื่อนี้ไว้ให้เธอดูเองเท่านั้น ช่วยให้หาสคริปต์เจอทีหลัง
  • รายชื่อผู้เล่นอยู่ที่มุมขวาบนของเกม
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

3
ขั้นที่ 3 / 8

สร้างคริสตัล

  1. เพิ่ม Part ตั้ง Size เป็น 6, 8, 6 เปิด Anchored และตั้งชื่อว่า Crystal เลือกสีสดและตั้ง Material เป็น Neon
  2. เลื่อนเมาส์ไปที่ Crystal คลิก + แล้วเพิ่ม ClickDetector
  3. เพิ่ม Script ใน Crystal แล้ววางโค้ดนี้
  4. กด Play แล้วคลิกคริสตัล Power จะเพิ่มขึ้น 1 ทุกครั้งที่คลิก
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector

clickDetector.MouseClick:Connect(function(player)
	local power = player.leaderstats.Power
	power.Value += player.Multiplier.Value
end)

แต่ละส่วนทำอะไร

  • ClickDetector ทำให้พาร์ตคลิกได้ ใช้ได้กับการแตะบนโทรศัพท์ด้วย
  • MouseClick บอกสคริปต์ว่าผู้เล่นคนไหนคลิก
  • สคริปต์เพิ่ม Multiplier ของผู้เล่นเข้าไปใน Power ของอัปเกรดจึงทำให้ทุกคลิกแรงขึ้น

ดูรายละเอียดเพิ่ม

  • พิมพ์ขนาดลงในช่อง Size ใน Properties แล้วกด Enter จากนั้นยกคริสตัลขึ้นด้วยเครื่องมือ Move จนมันตั้งอยู่บนพื้น
  • เมื่อคลิก + ให้พิมพ์ ClickDetector เพื่อหา ใน Explorer มันต้องอยู่ถัดเข้าไปทางขวาหนึ่งระดับ ใต้ Crystal
  • ในเกม ตัวชี้เมาส์จะเปลี่ยนเป็นรูปมือเมื่ออยู่เหนือคริสตัล
  • เธอต้องยืนให้ใกล้พอ ClickDetector ทำงานได้จากระยะ 32 studs หรือใกล้กว่านั้น
ข้อผิดพลาดที่พบบ่อย. คลิกแล้วไม่มีอะไรเกิดขึ้น: ClickDetector ต้องอยู่ใน Crystal โดยตรง ข้างๆ สคริปต์
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

4
ขั้นที่ 4 / 8

เพิ่มแผ่นขาย

  1. เพิ่ม Part บนพื้น ตั้ง Size เป็น 8, 1, 8 เปิด Anchored ทำให้เป็นสีเหลือง และตั้งชื่อว่า Sell
  2. เพิ่ม Script ใน Sell แล้ววางโค้ดนี้
  3. กด Play คลิกคริสตัลสองสามครั้ง แล้วเดินขึ้นไปบนแผ่น Power จะกลายเป็น Coins
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent

pad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if not player then return end

	local stats = player.leaderstats
	if stats.Power.Value > 0 then
		stats.Coins.Value += stats.Power.Value
		stats.Power.Value = 0
	end
end)

แต่ละส่วนทำอะไร

  • GetPlayerFromCharacter หาผู้เล่นที่เหยียบแผ่น
  • แผ่นเอา Power ทั้งหมดของผู้เล่นไปบวกเข้า Coins แล้วตั้ง Power กลับเป็น 0

ดูรายละเอียดเพิ่ม

  • แผ่นคือพาร์ตแบนๆ ที่ผู้เล่นเดินขึ้นไปบน
  • วางแผ่นให้แบนราบบนพื้น ถ้ามันสูงเกินไป ผู้เล่นจะก้าวขึ้นไปไม่ได้
  • ถ้าเดินขึ้นแผ่นตอนที่มีพลัง 0 จะไม่เกิดอะไรขึ้น อย่างนั้นถูกแล้ว
  • วิธีทดสอบ: คลิกคริสตัล 10 ครั้ง เดินขึ้นแผ่น แล้วรายชื่อผู้เล่นจะแสดง Power 0 และ Coins 10
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

5
ขั้นที่ 5 / 8

เพิ่มแผ่นอัปเกรด

  1. เพิ่ม Part อีกอันบนพื้น ตั้ง Size เป็น 8, 1, 8 เปิด Anchored ทำให้เป็นสีฟ้า และตั้งชื่อว่า Upgrade
  2. เพิ่ม Script ใน Upgrade แล้ววางโค้ดนี้
  3. กด Play หาเหรียญให้ได้ 25 แล้วเหยียบแผ่น ตอนนี้ทุกคลิกจะได้พลัง 2
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}

pad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if not player or waiting[player] then return end

	local price = player.Multiplier.Value * 25
	local coins = player.leaderstats.Coins
	if coins.Value < price then return end

	waiting[player] = true
	coins.Value -= price
	player.Multiplier.Value += 1

	task.wait(1)
	waiting[player] = nil
end)

แต่ละส่วนทำอะไร

  • ราคาคือ Multiplier ของผู้เล่นคูณ 25 ของอัปเกรดแต่ละครั้งจึงแพงกว่าครั้งก่อน
  • ตาราง waiting กันไม่ให้ยืนบนแผ่นนานๆ แล้วซื้อของอัปเกรดหลายอันพร้อมกัน
  • หลังซื้อแล้ว Multiplier จะเพิ่มขึ้น 1

ดูรายละเอียดเพิ่ม

  • วางแผ่นให้ห่างจากแผ่นขายสักสองสามก้าว เพื่อไม่ให้ผู้เล่นซื้อโดยไม่ตั้งใจ
  • การอัปเกรดครั้งแรกราคา 25 เหรียญ หลังจากนั้น Coins จะลดลง 25 และการคลิกหนึ่งครั้งให้พลัง 2
  • ถ้ามีเหรียญน้อยกว่าราคา แผ่นจะไม่ทำอะไร ก้าวออกมา หาเพิ่ม แล้วกลับมาใหม่
  • การหยุดพัก 1 วินาทีคือเหตุผลที่ยืนนิ่งอยู่บนแผ่นแล้วซื้อได้แค่หนึ่งอัปเกรดต่อครั้ง
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

6
ขั้นที่ 6 / 8

ติดป้ายให้แผ่น

  1. เลื่อนเมาส์ไปที่ Sell คลิก + แล้วเพิ่ม BillboardGui ตั้ง Size เป็น {0, 200}, {0, 50} และ StudsOffset เป็น 0, 4, 0
  2. เพิ่ม TextLabel ลงใน BillboardGui ตั้ง Size เป็น {1, 0}, {1, 0} เปิด TextScaled แล้วพิมพ์ข้อความนี้: SELL
  3. ทำแบบเดียวกันกับ Upgrade ด้วยข้อความ: UPGRADE
  4. ทำแบบเดียวกันกับ Crystal ด้วยข้อความ: CLICK ME ตรงนั้นใช้ StudsOffset เป็น 0, 7, 0 ป้ายจะลอยอยู่เหนือคริสตัล

ดูรายละเอียดเพิ่ม

  • สำหรับ Size และ StudsOffset ให้คลิกช่องใน Properties พิมพ์ตัวเลขให้ตรงตามที่แสดง รวมถึงวงเล็บและเครื่องหมายจุลภาค แล้วกด Enter
  • Text เป็นคุณสมบัติของ TextLabel คลิกช่อง Text พิมพ์คำ แล้วกด Enter
  • วิธีที่เร็วกว่า: คลิก BillboardGui ที่ทำเสร็จแล้วใน Explorer กด Ctrl+C คลิกพาร์ตถัดไป แล้วกด Ctrl+Shift+V จากนั้นเปลี่ยนแค่ข้อความ
  • ป้ายช่วยให้ผู้เล่นใหม่เข้าใจเกมโดยไม่ต้องมีใครอธิบาย
เคล็ดลับ. BillboardGui จะหันหน้าเข้าหากล้องเสมอ ผู้เล่นจึงอ่านได้จากทุกด้าน
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

7
ขั้นที่ 7 / 8

ทดสอบวงจร

  1. กด F5 คลิก ขาย อัปเกรด แล้วทำซ้ำ
  2. ตรวจดูว่าราคาอัปเกรดเพิ่มขึ้น: 25 เหรียญ แล้ว 50 แล้ว 75
  3. กด Shift+F5 เพื่อหยุด ถ้ามีอะไรผิดพลาด ให้เปิดหน้าต่าง Output จากเมนู Window แล้วอ่านตัวหนังสือสีแดง

ดูรายละเอียดเพิ่ม

  • ลองนับจำนวนคลิก เมื่อ Multiplier เป็น 1 คลิกสิบครั้งได้พลัง 10
  • หลังอัปเกรดครั้งแรก คลิกสิบครั้งได้พลัง 20 และหลังครั้งที่สองได้ 30
  • การเปลี่ยนแปลงที่เธอทำตอนเกมกำลังรันจะหายไปเมื่อเธอหยุด ให้กด Shift+F5 ก่อน แล้วค่อยแก้ไข
  • ในหน้าต่าง Output คลิกบรรทัดสีแดง แล้ว Studio จะเปิดสคริปต์ที่บรรทัดที่มีข้อผิดพลาด
ข้อผิดพลาดที่พบบ่อย. แผ่นไม่ยอมให้ซื้อ: ต้องมี Coins อย่างน้อย 25 ไม่ใช่ Power 25 ขายก่อน
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

8
ขั้นที่ 8 / 8

เผยแพร่เกม

  1. เลือก File → Publish to Roblox ตั้งชื่อเกมและเขียนคำอธิบายสั้นๆ
  2. บนเว็บไซต์ Creator Hub เปิดเกมของเธอแล้วตอบแบบสอบถาม Maturity
  3. ตั้งเกมเป็น Public แล้วส่งลิงก์ให้เพื่อน

ดูรายละเอียดเพิ่ม

  • ตอนเผยแพร่ครั้งแรก Studio จะถามชื่อและคำอธิบาย ให้คลิก Create
  • Creator Hub คือเว็บไซต์ create.roblox.com ลงชื่อเข้าใช้ด้วยบัญชีเดียวกันแล้วคลิกเกมของเธอในรายการ
  • Roblox อาจขอข้อมูลเพิ่มก่อนที่เกมจะเปิดเป็นสาธารณะได้ เช่น การตรวจสอบอายุของบัญชี หน้านั้นจะบอกว่ายังขาดอะไร
  • ถ้าเธออายุต่ำกว่า 18 ปี ให้ทำขั้นนี้ร่วมกับพ่อแม่หรือผู้ปกครอง
เคล็ดลับ. ความคืบหน้ายังไม่ถูกบันทึก เมื่อผู้เล่นออกจากเกม เหรียญจะหายไป การบันทึกข้อมูลเป็นบทเรียนขั้นสูง
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

ลองเช็กสามอย่างนี้ก่อน

  • ชื่อของพาร์ตและสคริปต์ทุกชิ้นต้องตรงกับในบทเรียนเป๊ะ รวมถึงตัวพิมพ์ใหญ่ด้วย
  • สคริปต์ต้องอยู่ในวัตถุที่ถูกต้อง ดูป้ายที่อยู่เหนือกล่องโค้ด
  • เปิดหน้าต่าง Output จากเมนู Window ข้อความสีแดงจะบอกว่าสคริปต์ไหนและบรรทัดไหนมีปัญหา

ยังติดอยู่ใช่ไหม? เขียนมาหาเราได้เลย →

ลองแก้เองดูสิ

  • เพิ่มคริสตัลอันที่สองที่ให้พลัง 5 ต่อคลิก แต่ตั้งอยู่ไกลออกไป
  • ทำให้ราคาอัปเกรดเพิ่มเป็นสองเท่าทุกครั้ง คำใบ้: 25 * 2 ^ (player.Multiplier.Value - 1)
  • ทำให้คริสตัลใหญ่ขึ้นนิดหน่อยทุกครั้งที่คลิก คำใบ้: เปลี่ยน crystal.Size