วิธีสร้าง 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 ที่คุณเป็นเจ้าของและฝังลงใน