วิธีสร้าง Basic Unity Platform Game
ในส่วนที่ 1 ของการสร้างเกมแพลตฟอร์ม Unity พื้นฐานเราได้ทำตามขั้นตอนในการสร้างตัวละครพื้นฐานของคุณเพิ่มฟิสิกส์แพลตฟอร์มและอินพุตของเมาส์ ในส่วนถัดไปเราจะพูดถึงวิธีการเพิ่มแพลตฟอร์มกระบวนการเมนูเกมและแหล่งข้อมูลบางอย่างเพื่อค้นหาโมเดลและปลั๊กอิน Unity เพิ่มเติมที่คุณสามารถใช้ในโครงการในอนาคตได้
การสร้างแพลตฟอร์มตามกระบวนการ
ดังนั้นในส่วนหนึ่งของบทแนะนำนี้เราจึงสร้างแพลตฟอร์มพื้นฐานที่ตัวละครของคุณสามารถตีกลับได้ ( และตกลงไปสู่การลงโทษ) แต่สำหรับ platformer จริงเราจำเป็นต้องเพิ่มแพลตฟอร์มเพิ่มเติม แต่เราไม่ต้องการเพิ่มล้านแพลตฟอร์ม - เราต้องการให้ Unity สร้าง แพลตฟอร์มโดยอัตโนมัติเมื่อตัวละครของเราตีกลับพร้อม
สำหรับนี้เราจำเป็นต้องมีเทมเพลตแพลตฟอร์ม - หรือที่เรียกว่า prefab prefabricated prefabricated และมันก็หมายความว่าทำไว้ล่วงหน้า - มักจะเป็นสำเนาของวัตถุเกมที่คุณสามารถนำมาใช้ซ้ำแล้วซ้ำอีก ในความเป็นจริง prefabs สามารถมี ลำดับชั้น ของออบเจ็กต์เกมซึ่งหมายความว่าคุณสามารถสร้างฉากทั้งหมดของวัตถุเกมได้
ดังนั้นสิ่งที่คุณต้องทำคือสร้างโฟลเดอร์เนื้อหาใหม่ที่ชื่อ Prefabs จากนั้นลากและวางแพลตฟอร์มของเราจากแผง ลำดับชั้น ลงในโฟลเดอร์ใหม่นี้ Prefabs จะเป็นที่รู้จักในแผงลำดับชั้นโดยใช้สีฟ้า
ตอนนี้เพื่อที่จะสั่งให้ Unity สร้างแพลตฟอร์มขั้นตอนเราต้องสร้างสคริปต์ที่เรียกว่า GameManager และแนบไปกับกล้อง สคริปต์ GameManager มีคำแนะนำที่สำคัญสำหรับเครื่องยนต์เพื่อถ่ายทอดให้กับเกมเพลย์ - ในกรณีนี้จะสร้างแพลตฟอร์มตามอักขระของเรา
เหตุผลที่เรายึดติดกับกล้องเนื่องจากกล้องจะไม่ถูกทำลายและคงที่ตลอดไปดังนั้นสคริปต์จะไม่ถูกทำลายและคงที่โดยยึดติดกับกล้อง
นี่คือสิ่งที่ต้องนำมารวมไว้ในสคริปต์:
ในการอธิบายโค้ดนี้สักหน่อยจำเป็นที่เราจะต้องสร้างข้อมูลอ้างอิงทั้งแผง prefab และทรงกลม (อักขระของเรา) ดังนั้นคุณต้องลากและวางลงในช่องเฉพาะในตัวแก้ไขของคุณ
รหัสนี้ยังประกอบด้วยตัวแปรส่วนตัวสามตัวซึ่ง ได้แก่ บรรทัดที่ขึ้นต้นด้วย private var เหล่านี้จะสร้างอินสแตนซ์ (การอ้างอิง) แผง prefab ด้วยวิธีต่อไปนี้:
- ขอบเขต Private var: float กำหนดขีด จำกัด บนแกน y ดังนั้นเมื่ออักขระของเรากระโดด สูง กว่าขอบเขตนี้แผงควบคุมใหม่จะถูกสร้างขึ้น
- การหมุนเวียนส่วนตัว: Quaternion; เพียงแค่เพิ่มการหมุนที่จำเป็นเพื่อสร้างอินสแตนซ์ของเรา prefabs - แต่เรากำลังเพิ่มการ หมุน = Quaternion.identify; เนื่องจาก จะสั่งให้เครื่องยนต์ไม่หมุนวัตถุเกม วัตถุ (แผ่น prefab ของเรา) จะสอดคล้องกับโลกอย่างแท้จริง
- ตัวแปรส่วนตัวสุดท้าย lastPlatformPosition จะจำและบันทึกตำแหน่งของแพลตฟอร์มสุดท้ายเป็นเวกเตอร์ 3 มิติ (โดยทั่วไปแพลตฟอร์มจะไม่หายไปหลังคุณดังนั้นคุณจึงสามารถย้อนกลับไปในโลกของเกมได้หากต้องการ)
ในบิตต่อไปของสคริปต์นี้เราจะเพิ่มเช็คสำหรับ เฟรมทุกเฟรม ของเรา (ตัวละคร) อยู่เหนือขอบเขต (ที่สร้างแพลตฟอร์มใหม่) - ถ้าตัวละครของเราอยู่เหนือขอบเขตเราจะ เพิ่มเขตแดน เพื่อสร้างแผง / แพลตฟอร์มใหม่ที่สูงกว่าที่ผ่านมา
ขั้นตอนต่อไปคือการเพิ่มโค้ดที่กำหนดตำแหน่งแผงถัดไป:
เรากำลังใช้รหัส ขณะดำเนินการ ในโค้ดนี้เพื่อให้แน่ใจว่าค่า X และ Z ของเวกเตอร์ (ตำแหน่งในโลกของเกม) ไม่เหมือนกับแพลตฟอร์มก่อนหน้านี้ดังนั้นแพลตฟอร์มที่สร้างขึ้นโดยโปรแกรมจะเพิ่มความสูงเสมอ
แน่นอนว่าเราไม่ต้องการให้ค่าเหล่านี้ถูกวางไว้ อย่างเคร่งครัด - การสุ่มเป็นเรื่องเล็กน้อยเป็นสิ่งที่ดีมิฉะนั้นเราก็ทำบันไดที่สมบูรณ์แบบ ดังนั้นเราจึงใช้ฟังก์ชัน Random.Range ระหว่างค่า -1 และ 2 เพื่อเรียกค่าแบบสุ่มสำหรับ X และ Z คุณสามารถเล่นตัวเลขเหล่านี้ได้เล็กน้อยถ้าคุณต้องการที่จะหลอกตัวเอง
การสร้างเมนูเกม
จนถึงตอนนี้เราได้สร้างเกมที่คุณสามารถกระโดดขึ้นพร้อมกับเพิ่มความสูงและเลื่อนเมาส์ไปรอบ ๆ เพื่อควบคุมทิศทาง ปัญหาคือถ้าคุณล้มลงแพลตฟอร์มคุณก็จะล้มลงไม่รู้จบเราจำเป็นต้องใช้สคริปต์ในเมนูเกมตาย / เกมเพื่อเริ่มต้นใหม่
ดังนั้นโดยทั่วไปเราจะเขียนสคริปต์เพื่อตรวจสอบว่าทรงกลม (ตัวละคร) ของเราอยู่ต่ำกว่า แพลตฟอร์มแรกของเกม หรือไม่ ถ้าเป็นเช่นนั้นสคริปต์จะโหลดฉากใหม่
ขั้นตอนแรกของเราคือเพื่อตรวจสอบว่าทรงกลมลดลงต่ำกว่าเกณฑ์ที่ระบุ ไปที่สคริปต์ GameManager ที่ เราทำไว้ก่อนหน้านี้และดูที่คำสั่ง if ของฟังก์ชัน อัพเดต
เราจะใช้คำสั่ง else ถ้า นี่เพื่อตรวจสอบว่าตำแหน่งทรงกลมของเราอยู่ต่ำกว่า -2.0 หน่วยของตำแหน่ง Y หรือไม่? ถ้ามีอยู่ฟังก์ชัน เกม ส่วนตัวของเราจะ ยัง คงอยู่ที่นี่บิตสคริปต์เป็นตัวอธิบาย
บิตล่าสุดของสคริปต์เป็นฟังก์ชันที่จะใช้สำหรับจัดการเกมเหนือสถานะและโหลดเมนูเกมของเรา
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่นี่เป็นการสร้างชั้นเรียนของ Unity - เราสามารถเรียกใช้ฟังก์ชัน LoadLevel เพื่อสร้างฉากใหม่ซึ่งในกรณีนี้เป็นเพียงเมนูเกมของเราเท่านั้นโปรดจำไว้ว่าทุกอย่างใน Unity คือระดับต่างๆ เมนูหลัก (Start Game - Options - Credits - Etc. ) เป็นเพียงแค่ระดับ / ฉากที่มีบิตของข้อความที่สามารถคลิกได้ หน้าจอการโหลดของ Skyrim เหมือนกันใช่มั้ย? พวกเขาเป็นเพียงโมเดล 3 มิติในพื้นที่ว่างเปล่าที่มีแถบโหลด
ในกรณีใด ๆ เราต้องสร้างฉากผ่าน ไฟล์> ฉากใหม่ และตั้งชื่อ เมนู ขณะบันทึก จากนั้นเราจะเพิ่มฉากทั้งสองฉากลงในกระบวนการสร้าง ซึ่งทำได้ผ่าน File> Build Settings
ฉากเมนูของเราควรยังคงเปิดอยู่ดังนั้นเพียงแค่คลิกปุ่มเพิ่มปัจจุบันและเพิ่มฉากลงใน การตั้งค่าการจัดสร้าง ของคุณ - ทำอีกครั้งด้วยฉากระดับ
เมื่อเราตายในเกมสคริปต์ที่เราสร้างขึ้นควรเปลี่ยนจากระดับเกมไปเป็นฉากเมนู
เพิ่มปุ่มเริ่มเล่นสำหรับผู้เล่น
ขณะนี้เราสามารถเล่นเกมได้ในโหมดทดสอบ แต่ ณ ขณะนี้ผู้เล่นไม่มีวิธีเริ่มเกมหากเราอัปโหลดเกมนี้ขึ้นที่ใด ดังนั้นเราจำเป็นต้องสร้างเมนูเกมที่มีปุ่มสำหรับเริ่มเล่นเกม
เพื่อสลับไปที่ฉากเมนูเกมและเพิ่มบิตนี้ไปที่กล้อง ( ในแผงควบคุมโปรดจำไว้จากจุด 1 ของบทแนะนำนี้)
- ล้างธง: สีทึบ
- ความเป็นมา: # 000
- ความกว้าง: 200
- ส่วนสูง: 60
นี้จะทำให้เรามีพื้นหลังสีดำที่มั่นคงสำหรับเมนูเกมของเรา - นี้จะกระทำใน ค่า RGB ไม่ hex - ดังนั้นสีฟ้าจะเป็น 001, สีเขียวคือ 010, สีแดงเป็น 100 ฯลฯ ฉันสามารถอธิบายได้สำหรับคุณ แต่สิ่งที่คุณต้อง ที่ต้องทำคือตัวเลือก Google RGB หากคุณต้องการสีเฉพาะ
การย้ายเราจำเป็นต้องเพิ่มปุ่มของเราเพื่อเริ่มเกม นี่ทำผ่าน องค์ประกอบ UI - โดยพื้นฐานแล้วเราสามารถเพิ่มองค์ประกอบ UI ได้เช่นเดียวกับการเพิ่มองค์ประกอบ 3 มิติผ่านแผง ลำดับชั้น เพื่อไปข้างหน้าและสร้าง ปุ่ม UI และคุณจะเห็นองค์ประกอบใหม่ในแผง ลำดับชั้น :
- EventSystem
- ผ้าใบ
- ปุ่ม
- ข้อความ
เพื่อแบ่งช่องนี้ลง - ผ้าใบ เป็นคอนเทนเนอร์สำหรับองค์ประกอบ UI ทั้งหมดและเราสามารถตอบสนองได้ ( โดยการตอบสนองหมายถึงการปรับขนาดหน้าจอไม่ตอบสนองเช่นว่าจะตอบคำถามที่คุณถามที่ดีที่สุดคือสคริปต์ AI) ในกรณีใด ๆ เราจะเปลี่ยนตำแหน่งของปุ่มต่อไปนี้:
- Rect Transform {Pos X: 0, Pos Y: 0, Pos Z: 0}
- การแปลงเหลี่ยม {กว้าง: 200, สูง: 60}
เพื่อให้ภาพดูน่าเก๋ขึ้นคุณสามารถลบภาพต้นฉบับของปุ่มและตั้งสีได้ และเพื่อเปลี่ยนข้อความของปุ่มเพียงแก้ไของค์ประกอบ Text ให้เป็นอย่างอื่นเช่น START GAME และกำหนดขนาดตัวอักษรประมาณ 16
เพื่อให้ สามารถคลิก ปุ่ม ได้ เราจะเพิ่มฟังก์ชันลงในสคริปต์ UIController ในองค์ประกอบของ ปุ่ม เพียงเพิ่มโค้ดด้านล่างนี้:
ใช้ฟังก์ชันนี้กับการตั้งค่า Inspector ของปุ่มและในการตั้งค่าส่วนประกอบ ปุ่ม (สคริปต์) เราจะเพิ่มฟังก์ชันที่ทำงานเมื่อผู้เล่นคลิกที่ปุ่ม Start ของเรา ดังนั้นเพียงแค่เพิ่มฟังก์ชันลง ใน เหตุการณ์ คลิก () (เปิด) () และลาก / วางปุ่มเกมเริ่มต้นไปที่ฟิลด์ป้อนข้อมูล สุดท้ายเลือกฟังก์ชันที่สร้างขึ้นใหม่จากสคริปต์ UIController ( UIController.StartGame)
เราสามารถใช้ฟังก์ชันนี้ได้ในการตั้งค่า Inspector ของปุ่ม ในการตั้งค่าคอมโพเนนต์ของปุ่ม (สคริปต์) เราสามารถเรียกใช้ฟังก์ชันได้ทุกครั้งที่ผู้เล่นคลิก สำหรับนี้เราจะเพิ่มฟังก์ชันใหม่ลงในเหตุการณ์คลิก () โดยคลิกที่ไอคอน + ตอนนี้เราสามารถลากและวางปุ่มเองลงในช่องใส่ได้ จากนั้นเราเลือกฟังก์ชันที่เราเขียนจากสคริปต์ UIController (UIController.StartGame)
วิธีการส่งออก / เผยแพร่เป็นบราวเซอร์ WebGL Browser
เปิดการตั้งค่าการสร้างและเลือก WebGL เป็นแพลตฟอร์มเป้าหมาย ตอนนี้คลิกปุ่ม Switch Platform แล้วคลิกปุ่ม Build และให้ชื่อเกมของคุณ หลังจากสร้างแล้วไฟล์จะถูกส่งออก / บันทึกเป็นไฟล์. HTML ซึ่งสามารถเปิด / ดูได้จากเบราว์เซอร์ที่เปิดใช้งาน WebGL แม้ว่าคุณต้องการ เผยแพร่ เกมของคุณมีสองวิธีเพื่อให้บรรลุเป้าหมายนี้:
- อัปโหลดเกมของคุณไปยังโฮสต์ไฟล์ (Dropbox, Google ไดรฟ์ ฯลฯ ) จากนั้นแชร์ลิงก์ นี่เป็นประโยชน์สำหรับการ สาธิต ขนาดเล็กที่คุณต้องการแสดงให้เพื่อนหรือผู้มีโอกาสเป็นลูกค้า ( เว็บไซต์พอร์ทัลเกมที่จะซื้อเกมของคุณหรือตั้งค่ารายได้จากโฆษณาร่วมกับคุณ)
- อัปโหลดเกมของคุณไปยังเซิร์ฟเวอร์ FTP ที่คุณเป็นเจ้าของและฝังลงใน
คุณสามารถปรับแต่งค่า iframe เหล่านั้นและทำสิ่งต่างๆมากมายได้ด้วย ตัวอย่างเช่นการเพิ่มแท็ก iframe เช่น allowfullscreen = true จะทำให้เกมเบราว์เซอร์ของคุณสามารถแสดงผลแบบเต็มหน้าจอได้
แหล่งข้อมูลเพิ่มเติม:
ฉันอยากจะแนะนำ ไม่ พยายามที่จะเผยแพร่เกมนี้ที่เราทำในการกวดวิชานี้ไปพอร์ทัลเกมแพลตฟอร์ม; คุณจะดูโง่จริงๆโดยไม่ต้องขัดมันขึ้นเล็กน้อยก่อน
วิธีการหนึ่งที่ทำให้เกมของคุณดู ดีขึ้น โดยเฉพาะอย่างยิ่งหากคุณไม่ค่อยดีในการสร้างโมเดล 3 มิติก็คือการใช้แหล่งข้อมูลฟรี ( หรือจ่าย) นี่คือห้องสมุดบางแห่งมีมูลค่าการตรวจสอบ:
- Unity Asset Store ( แหล่งข้อมูล Unity's อย่างเป็นทางการ - มีทางเลือกฟรีมากมายเช่นกัน)
- Sketchfab: โมเดล Unity 3D
- Deviantart: โมเดล Unity 3D
- Worlds Procedural: สินทรัพย์ Unity
- GameArt2D: Freebies ( สไปรท์ส่วนใหญ่ / pixel-based assets)
มีทรัพยากรมากมายเหลือเกินที่คุณต้องระมัดระวังและอ่านภาพพิมพ์ที่ละเอียดดี - เนื้อหาฟรีบางอย่างได้รับอนุญาตให้ใช้ในโครงการเชิงพาณิชย์และอื่น ๆ ให้คุณใช้ทรัพยากรของตนได้หากเกมของคุณเป็นอิสระในการเล่น
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่