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

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

Dropper ปล่อยก้อนสี่เหลี่ยม สายพานลำเลียงพาไป ตัวเก็บแปลงให้เป็นเงินสด และปุ่มหนึ่งปุ่มซื้อ dropper อันที่สอง

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

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

  1. เปิด Roblox Studio คลิก New Experience แล้วเลือกเทมเพลต Baseplate
  2. ใน Explorer เลื่อนเมาส์ไปที่ Workspace คลิก + แล้วเพิ่ม Folder ตั้งชื่อว่า Tycoon
  3. ทุกอย่างที่สร้างในบทเรียนนี้จะอยู่ในโฟลเดอร์นั้น ช่วยให้ Explorer เป็นระเบียบ

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

  • เทมเพลต Baseplate อยู่ในรายการเทมเพลตบนหน้าจอเริ่มต้น
  • เมื่อคลิก + รายการจะเปิดขึ้น พิมพ์คำว่า Folder เพื่อหาให้เร็ว แล้วคลิกที่มัน
  • ถ้าจะเปลี่ยนชื่อโฟลเดอร์ ให้คลิกมันหนึ่งครั้ง กด F2 พิมพ์ Tycoon แล้วกด Enter
  • ถ้าใช้ Mac ให้ใช้ปุ่ม Cmd ทุกครั้งที่บทเรียนนี้บอกว่า Ctrl
เคล็ดลับ. เปลี่ยนชื่อพาร์ตทุกอันทันทีหลังสร้าง สคริปต์หาพาร์ตจากชื่อ พาร์ตที่ยังชื่อ Part อยู่จะใช้ไม่ได้
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

2
ขั้นที่ 2 / 9

ให้เงินสดกับผู้เล่นทุกคน

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

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

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

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

  • PlayerAdded ทำงานหนึ่งครั้งสำหรับผู้เล่นแต่ละคนที่เข้าเกม
  • โฟลเดอร์ที่ชื่อ leaderstats เป็นโฟลเดอร์พิเศษ Roblox จะแสดงค่าที่อยู่ข้างในในรายชื่อผู้เล่น
  • IntValue เก็บจำนวนเต็ม ในที่นี้เก็บเงินสดของผู้เล่น

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

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

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

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

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

3
ขั้นที่ 3 / 9

สร้าง dropper

  1. เพิ่ม Part ลงในโฟลเดอร์ Tycoon ตั้ง Size เป็น 4, 1, 4 เปิด Anchored และตั้งชื่อว่า Dropper
  2. ยกมันขึ้นสูงจากพื้นประมาณ 10 studs ด้วยเครื่องมือ Move (Ctrl+2)
  3. เพิ่ม Script ใน Dropper แล้ววางโค้ดนี้
  4. กด Play จะมีก้อนสี่เหลี่ยมสีเหลืองตกลงมาทุก 2 วินาที
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

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

  • Instance.new สร้างพาร์ตใหม่จากโค้ด
  • Position วางก้อนสี่เหลี่ยมไว้ใต้ dropper 2 studs
  • Debris ลบก้อนสี่เหลี่ยมแต่ละก้อนหลังผ่านไป 20 วินาที ก้อนเก่าจึงไม่กองสะสม

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

  • ถ้าจะใส่พาร์ตเข้าโฟลเดอร์ ให้ลากชื่อของมันใน Explorer ไปปล่อยบนชื่อ Tycoon
  • ใช้เครื่องมือ Move ลากลูกศรสีเขียวขึ้นไปข้างบน ช่อง Position ใน Properties แสดงความสูงเป็นตัวเลขตรงกลาง
  • ลูกบาศก์จะโผล่ต่ำกว่าเครื่องปล่อย 2 studs แล้วตกลงมา ถ้าเครื่องปล่อยอยู่ต่ำเกินไป ลูกบาศก์จะกองอยู่ข้างใต้
  • ลูกบาศก์ลูกแรกจะมา 2 วินาทีหลังเริ่มเกม
ข้อผิดพลาดที่พบบ่อย. ไม่มีก้อนสี่เหลี่ยมโผล่มา: ตรวจดูว่าสคริปต์อยู่ใน Dropper และ Dropper เป็น Anchored
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

4
ขั้นที่ 4 / 9

เพิ่มสายพานลำเลียง

  1. เพิ่ม Part ตั้ง Size เป็น 6, 1, 30 เปิด Anchored และตั้งชื่อว่า Conveyor
  2. วางบนพื้นให้ปลายด้านหนึ่งอยู่ใต้ dropper พอดี
  3. เพิ่ม Script ใน Conveyor แล้ววางโค้ดนี้
  4. กด Play ก้อนสี่เหลี่ยมจะตกบนสายพานแล้วไหลไปตามมัน
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

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

  • AssemblyLinearVelocity บอก Roblox ว่าของที่อยู่บนพาร์ตควรเคลื่อนที่เร็วแค่ไหน
  • LookVector คือทิศที่ด้านหน้าของพาร์ตหันไป ตัวเลข 8 คือความเร็วเป็น studs ต่อวินาที

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

  • พาร์ตทุกชิ้นมีด้านหน้า สายพานจะดันลูกบาศก์ไปทางด้านหน้าของมัน
  • ด้านยาวของสายพาน ซึ่งยาว 30 studs ต้องชี้ออกจากเครื่องปล่อย ไปทางที่เครื่องรวบรวมจะตั้งอยู่
  • ตัวสายพานเองไม่ได้เคลื่อนที่ มีแต่สิ่งที่อยู่ข้างบนเท่านั้นที่ไถลไป
  • ถ้าลูกบาศก์ตกข้างสายพาน ให้ทำสายพานกว้างขึ้นหรือย้ายเครื่องปล่อยไปไว้ตรงกลาง
ข้อผิดพลาดที่พบบ่อย. ก้อนสี่เหลี่ยมไหลผิดทาง: หมุนสายพาน 180 องศาด้วยเครื่องมือ Rotate (Ctrl+4)
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

5
ขั้นที่ 5 / 9

เก็บก้อนสี่เหลี่ยม

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

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

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

  • สคริปต์ไม่สนใจอะไรก็ตามที่ไม่ได้ชื่อ Cube เท้าของเธอไม่นับ
  • Destroy ลบก้อนสี่เหลี่ยมออกจากเกม
  • ลูปให้เงินสด 5 กับผู้เล่นทุกคนในเซิร์ฟเวอร์ tycoon ที่หนึ่งแปลงมีหนึ่งเจ้าของเป็นบทเรียนขั้นสูง

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

  • Size 6, 4, 1 ตั้งตรงอยู่แล้ว: กว้าง 6 สูง 4 และหนา 1 วางขวางปลายสายพานเหมือนประตูที่ปิดอยู่
  • ขอบล่างของมันควรแตะสายพาน เพื่อไม่ให้ลูกบาศก์ลอดใต้มันไปได้
  • ถ้าจะทำให้เป็นสีเขียว ให้คลิกช่อง Color ใน Properties
  • วิธีทดสอบ: กด F5 แล้วดูรายชื่อผู้เล่น Cash จะเพิ่มขึ้น 5 ทุกครั้งที่ลูกบาศก์ไปถึงกำแพง
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

6
ขั้นที่ 6 / 9

เตรียม dropper อันที่สอง

  1. เลือก Dropper แล้วกด Ctrl+D ตั้งชื่อสำเนาว่า Dropper2 แล้วย้ายไปไว้ข้างอันแรก ยังอยู่เหนือสายพานเหมือนเดิม
  2. ลาก Dropper2 จาก Workspace ไปไว้ใน ServerStorage
  3. มันจะหายไปจากโลกในเกม วัตถุใน ServerStorage จะรออยู่ตรงนั้นจนกว่าสคริปต์จะย้ายกลับมา

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

  • สำเนาอยู่ซ้อนบนของเดิมพอดี ลากมันไปด้านข้างด้วยเครื่องมือ Move เพื่อให้เห็นทั้งสองชิ้น
  • เปลี่ยนชื่อสำเนาด้วย F2 ชื่อต้องเป็น Dropper2 ตัว D พิมพ์ใหญ่ และไม่มีเว้นวรรค
  • ServerStorage อยู่ในรายการของ Explorer ลากชื่อ Dropper2 ไปปล่อยบนมัน
  • สคริปต์ข้างในสำเนาติดมาด้วย เธอไม่ต้องเพิ่มซ้ำ
เคล็ดลับ. สคริปต์ที่อยู่ใน ServerStorage จะไม่ทำงาน เพราะอย่างนี้ dropper อันที่สองจึงเงียบอยู่จนกว่าจะมีคนซื้อ
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

7
ขั้นที่ 7 / 9

เพิ่มปุ่มซื้อ

  1. เพิ่ม Part บนพื้นใกล้สายพาน ตั้ง Size เป็น 4, 1, 4 เปิด Anchored ทำให้เป็นสีฟ้าสด และตั้งชื่อว่า BuyDropper
  2. เพิ่ม Script ใน BuyDropper แล้ววางโค้ดนี้
  3. เพื่อติดป้ายให้ปุ่ม เลื่อนเมาส์ไปที่ BuyDropper คลิก + แล้วเพิ่ม BillboardGui ตั้ง Size เป็น {0, 200}, {0, 50} และ StudsOffset เป็น 0, 3, 0
  4. เพิ่ม TextLabel ลงใน BillboardGui ตั้ง Size เป็น {1, 0}, {1, 0} เปิด TextScaled แล้วพิมพ์ข้อความนี้: Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

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

  • PRICE คือราคา เปลี่ยนตัวเลขเพื่อให้ปุ่มถูกลงหรือแพงขึ้น
  • สคริปต์ตรวจว่าผู้เล่นตัวจริงมาแตะปุ่ม และผู้เล่นมีเงินสดพอ
  • การย้าย Dropper2 ไปที่ workspace คือการเปิดใช้งานมัน สคริปต์ของมันเริ่มทำงานทันที

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

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

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

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

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

8
ขั้นที่ 8 / 9

ทดสอบทั้งวงจร

  1. กด F5 ดูก้อนสี่เหลี่ยมตกลงมา ไหลไปบนสายพาน และกลายเป็นเงินสด
  2. รอจนมีเงินสด 50 แล้วเหยียบปุ่มสีฟ้า
  3. dropper อันที่สองจะโผล่ขึ้นมา ปุ่มหายไป และเงินสดของเธอเพิ่มเร็วขึ้นสองเท่า
  4. กด Shift+F5 เพื่อหยุด ถ้ามีอะไรผิดพลาด ให้เปิดหน้าต่าง Output จากเมนู Window แล้วอ่านตัวหนังสือสีแดง

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

  • ต้องใช้ลูกบาศก์ 10 ลูก คืออย่างน้อย 20 วินาที ถึงจะได้เงินสด 50
  • หลังซื้อ Cash จะลดลง 50 อย่างนั้นถูกแล้ว เธอจ่ายเงินให้เครื่องปล่อยไปแล้ว
  • ปุ่มจะถูกทำลายหลังซื้อ จึงซื้อซ้ำสองครั้งไม่ได้
  • ถ้าเครื่องปล่อยเครื่องที่สองโผล่ผิดที่ ให้หยุดเกม ลาก Dropper2 จาก ServerStorage กลับไปที่ Workspace ย้ายมัน แล้วลากเข้า ServerStorage อีกครั้ง
ข้อผิดพลาดที่พบบ่อย. Cash ไม่เปลี่ยนเลย: ชิ้นส่วนที่ตกลงมาต้องชื่อ Cube ให้ตรงเป๊ะตามสคริปต์ dropper
ขั้นนี้ใช้ไม่ได้สำหรับฉัน

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

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

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

9
ขั้นที่ 9 / 9

เผยแพร่เกม

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

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

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

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

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

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

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

  • ทำให้ก้อนสี่เหลี่ยมแต่ละก้อนมีค่า 10 เงินสดแทนที่จะเป็น 5
  • เพิ่ม dropper อันที่สามที่ราคา 200 เงินสด
  • ทำให้ dropper อันที่สองเร็วกว่าอันแรก ต้องเปลี่ยนตัวเลขตัวไหน?