Unity 3D เป็นเครื่องมือสร้างเกมที่ทรงพลังใช้งานง่ายและที่สำคัญที่สุดคือดาวน์โหลดได้ฟรี! (มีรุ่นจ่ายที่มีประสิทธิภาพมากกว่า แต่คุณสามารถทำอะไรได้มากมายกับรุ่นฟรี)
แม้จะมีชื่อ Unity สามารถใช้ได้ทั้งเกม 2D และ 3D คุณสามารถเขียนโปรแกรมใน C #, Java หรือ Boo ซึ่งเป็นภาษาที่คล้ายคลึงกับ Python ในบทช่วยสอนนี้ฉันจะแนะนำคุณเกี่ยวกับสภาพแวดล้อม Unity และแสดงวิธีสร้างเกมอย่างง่ายใน Unity
คุณไม่จำเป็นต้องมีประสบการณ์การเขียนโค้ดใด ๆ เพื่อติดตามคำแนะนำนี้ อย่างไรก็ตามขอแนะนำให้ใช้เพราะคุณอาจมีข้อผิดพลาดในการพิสูจน์รหัสของคุณได้ง่ายขึ้นหากคุณมีพื้นหลังของภาษาการเขียนโปรแกรมบางอย่าง
คำสั่งนี้ขึ้นอยู่กับบทช่วยสอนของ RollaBall บนเว็บไซต์ Unity มีบทช่วยสอนฟรีจำนวนมากที่สามารถพบได้บนหน้าเว็บบทช่วยสอน Unity ฉันสร้างคำสั่งนี้เป็นส่วนใหญ่สำหรับการฝึกของฉันเองกับ Unity แต่ยังรวมถึงการสอนวิดีโอเสริมด้วยชุดคำสั่งที่เขียนทีละขั้นตอน
วัสดุ:
ขั้นตอนที่ 1: สร้างโครงการใหม่
เปิด Unity3D
ปิดหน้าต่าง "ยินดีต้อนรับสู่ความสามัคคี" ที่ปรากฏขึ้นตามค่าเริ่มต้นเมื่อคุณเปิด Unity
คลิกไฟล์ - โครงการใหม่
เลือกที่ตั้งสำหรับโครงการของคุณ ฉันชอบใช้โฟลเดอร์เฉพาะหนึ่งโฟลเดอร์เพื่อเก็บโปรเจ็กต์ Unity ทั้งหมดของฉัน
พิมพ์ชื่อสำหรับโครงการของคุณ ในภาพหน้าจอโครงการใหม่เรียกว่า "
ดูภาพหน้าจอเพื่อดูว่าควรมีลักษณะอย่างไรก่อนคลิกปุ่มสร้าง
คลิก“ สร้าง”
ขั้นตอนที่ 2: ปรับแต่งเค้าโครง
สิ่งแรกที่คุณอาจต้องทำคือปรับแต่งเค้าโครง ทุกหน้าต่างสามารถคลิกและลากเข้าสู่ตำแหน่งได้ หรือคุณสามารถใช้เลย์เอาต์เริ่มต้นที่มาพร้อมกับ Unity ได้โดยคลิกที่ดร็อปบาร์ภายใต้เลย์เอาต์ที่ด้านบนซ้ายของหน้าจอ ฉันชอบเลย์เอาต์แบบสูง แต่ฉันคิดว่าการวางมุมมองเกมไว้ใต้มุมมองฉากจะเป็นประโยชน์
มีห้าหน้าต่างหลักที่คุณใช้เป็นส่วนใหญ่กับ Unity พวกเขาคือ ฉาก, เกม, ลำดับชั้น, โครงการและ ผู้ตรวจการ หน้าต่าง ดูภาพห้าภาพที่ด้านบนของขั้นตอนสำหรับภาพของแต่ละหน้าต่าง
ฉาก - นี่คือสิ่งที่ทำให้เกมเกิดขึ้น มันแสดงให้เห็นว่าองค์ประกอบที่คุณมีในเกมของคุณและที่พวกเขามีความสัมพันธ์ซึ่งกันและกัน มีบล็อกที่มุมขวาบนแสดงการวางแนวของฉาก
เกม - แสดงมุมมองที่กล้องหลักเห็นเมื่อเล่นเกม คุณสามารถทดสอบเกมของคุณในหน้าต่างนี้ได้โดยคลิกปุ่มเล่นที่ด้านบนตรงกลางของหน้าจอ
ลำดับชั้น - แสดงรายการองค์ประกอบทั้งหมดที่คุณเพิ่มลงในฉาก นี่คือกล้องหลักตามค่าเริ่มต้น คุณสามารถสร้างองค์ประกอบใหม่โดยคลิกสร้างและเลือกประเภทของวัตถุที่คุณต้องการ สิ่งนี้สามารถทำได้โดยใช้เมนูแบบเลื่อนลง GameObject ที่ด้านบนของหน้าจอ
โครงการ - แสดงไฟล์ที่ใช้สำหรับเกม คุณสามารถสร้างโฟลเดอร์สคริปต์ ฯลฯ โดยคลิกสร้างภายใต้หน้าต่างโครงการ
ผู้ตรวจการ - นี่คือที่ที่คุณปรับแต่งแง่มุมขององค์ประกอบแต่ละอย่างที่อยู่ในฉาก เพียงเลือกวัตถุในหน้าต่างลำดับชั้นหรือดับเบิลคลิกที่วัตถุในหน้าต่างฉากเพื่อแสดงคุณสมบัติในแผงตรวจสอบ
ขั้นตอนที่ 3: บันทึกฉากและตั้งค่า Build
คลิกไฟล์ - บันทึกฉาก บันทึกฉากใต้โฟลเดอร์ ชื่อโครงการ - สินทรัพย์ เนื้อหาเป็นโฟลเดอร์ที่สร้างไว้ล่วงหน้าซึ่งคุณต้องการจัดเก็บฉากและสคริปต์ของคุณ คุณอาจต้องการสร้างโฟลเดอร์ชื่อ Scenes ภายใน Assets เนื่องจากโฟลเดอร์ Assets อาจยุ่งเหยิง
บันทึกฉากเป็นซีนหรือหลักหรืออะไรทำนองนั้น
คลิกไฟล์ - สร้างการตั้งค่า
เพิ่มฉากปัจจุบันเพื่อสร้าง
เลือกแพลตฟอร์มที่ต้องการ มีตัวเลือกมากมายรวมถึงคอมพิวเตอร์ระบบเกมและสมาร์ทโฟน แต่ถ้าคุณสร้างโครงการเป็นครั้งแรกคุณอาจต้องการเลือก Web Player หรือ PC / Mac / Linux Standalone
คลิกการตั้งค่าเครื่องเล่นที่ด้านล่างของหน้าต่างสร้างการตั้งค่า นี่เป็นการเปิดตัวเลือกการตั้งค่าผู้เล่นในตัวตรวจสอบ ที่นี่คุณสามารถเปลี่ยนชื่อ บริษัท ชื่อผลิตภัณฑ์ (เกม) ไอคอนเริ่มต้น ฯลฯ
ปิดออกจากหน้าต่างการตั้งค่าการสร้าง คุณจะกลับมาที่นี่เมื่อคุณพร้อมที่จะจบเกม
ขั้นตอนที่ 4: สร้างเวที
วิธีที่ง่ายที่สุดในการสร้างสเตจใน Unity คือการเพิ่มคิวบ์
ในการทำสิ่งนี้ให้ไปที่ Game Object - สร้าง Other - Cube หรือใช้เมนู Create ในหน้าต่างลำดับชั้น เพิ่มลูกบาศก์
รีเซ็ตการแปลงของลูกบาศก์โดยคลิกขวา“ แปลง” ในแผงตรวจสอบ เป็นการดีที่จะทำเช่นนี้เมื่อใดก็ตามที่คุณสร้าง Game Object ใหม่
เลือกคิวบ์ในลำดับชั้น เปลี่ยนชื่อเป็น“ Wall” โดยคลิกสองครั้งที่ชื่อในลำดับชั้นหรือใช้แผงตรวจสอบ
ปรับขนาดลูกบาศก์ในทิศทาง X เพื่อให้ยาวและเหมือนผนัง
คลิกขวา“ กำแพง” ในแผงลำดับชั้นแล้วทำซ้ำสามครั้งเพื่อให้คุณมีสี่กำแพง มันจะดูเหมือนว่าคุณมีเพียงกำแพงเดียวเพราะพวกมันเหมือนกันและดังนั้นจึงครอบครองจุดเดียวกันในอวกาศ ลากไปไว้ในตำแหน่งและ / หรือใช้ตัวเลือกการแปลงสำหรับแต่ละคิวบ์เพื่อจัดเรียงที่ดูเหมือนเวที
บันทึก: หากต้องการดูรอบ ๆ ฉากให้คลิกปุ่มกลางของเมาส์เพื่อเลื่อนและเลื่อนเพื่อซูมเข้าและออก คลิกและลากในขณะที่กดปุ่ม ALT ค้างไว้เพื่อหมุนมุมมอง
สร้างเกมวัตถุที่ว่างเปล่าโดยใช้รายการเกมวัตถุแบบเลื่อนลง (สร้างที่ว่าง) ที่ด้านบนของหน้าจอ เรียกว่า“ เวที” รีเซ็ตการแปลง
เลือก "Walls" ทั้งสี่และลากใต้วัตถุเกม "Stage"
เพิ่มเครื่องบินเกมวัตถุโดยเลือกสร้างในแผงลำดับชั้นและใช้สำหรับพื้น เปลี่ยนชื่อเป็น "ชั้น" และลากใต้สเตจในลำดับชั้น
บันทึก: คุณต้องกด Enter หลังจากเปลี่ยนชื่อมิฉะนั้นการเปลี่ยนแปลงอาจไม่มีผล
ให้การแปลงเป็น -0.5 ในทิศทาง Y เพื่อให้แน่ใจว่าเรียงกันอย่างเรียบร้อยกับผนังทั้งสี่
กำหนดขนาดของพื้นในทิศทาง X, Y และ Z 1/10 ของสเกลที่คุณใช้ปรับขนาดกำแพง
ขั้นตอนที่ 5: สร้างผู้เล่น
คุณสามารถดาวน์โหลดตัวละครจากสถานที่ต่าง ๆ ทางออนไลน์เช่น Unity Store แต่สำหรับบทช่วยสอนนี้เราจะใช้หนึ่งใน Game Objects ในตัวสำหรับผู้เล่น
ไปที่เกมวัตถุ - สร้างอื่น ๆ - ทรงกลม
เลือกทรงกลมในลำดับชั้นและเปลี่ยนชื่อเป็น“ ผู้เล่น” รีเซ็ตการแปลง
ตอนนี้เราต้องการฟิสิกส์ ทำให้ผู้เล่นอยู่ภายใต้กฎหมายของฟิสิกส์โดยคลิกเพิ่มชิ้นส่วนที่ด้านล่างของแผงตรวจสอบโดยเลือกผู้เล่น เพิ่มวิชาฟิสิกส์ - Rigidbody ปล่อยให้การตั้งค่าเริ่มต้นทั้งหมด
คุณจะสังเกตเห็นว่าแต่ละวัตถุมาพร้อมกับ“ ส่วนประกอบ” ที่หลากหลายที่เพิ่มเข้าไปในนั้นซึ่งคุณสามารถดูได้ในตัวตรวจสอบ แต่ละลูกบาศก์ทรงกลม ฯลฯ มีองค์ประกอบที่เรียกว่า "collider" นี่คือพื้นที่ทางกายภาพของหน้าจอที่วัตถุนั้นถูกพิจารณาว่าใช้พื้นที่ หากคุณปิด collider กว่าวัตถุจะกลายเป็นเหมือนผีสามารถที่จะผ่านวัตถุอื่นได้ (ดูวิดีโอว่าเกิดอะไรขึ้นเมื่อคุณปิดส่วนประกอบ collider ของผู้เล่น) คุณสามารถเปิดและปิดส่วนประกอบได้โดยทำเครื่องหมายและยกเลิกการทำเครื่องหมายที่ช่องถัดจากชื่อคอมโพเนนต์
ขั้นตอนที่ 6: ทำให้ผู้เล่นย้ายไปมา
เลือกผู้เล่นในลำดับชั้น
ย่อขนาดส่วนประกอบที่คุณไม่ต้องการให้เปิดในตัวตรวจสอบโดยคลิกลูกศรลงทางด้านซ้ายของชื่อของแต่ละองค์ประกอบ นี่จะเป็นการล้างพื้นที่ทำงานของคุณเล็กน้อย
คลิกเพิ่มคอมโพเนนต์ที่ด้านล่างของหน้าต่างตัวตรวจสอบ เลือกสคริปต์ใหม่ตั้งชื่อสคริปต์เช่น "PlayerController" และเลือกภาษาการเขียนโปรแกรม ฉันใช้ CSharp คลิกสร้างและเพิ่ม
เพื่อประโยชน์ในการจัดระเบียบไฟล์ให้เปิดโฟลเดอร์สินทรัพย์ในหน้าต่างโครงการและสร้างโฟลเดอร์ที่เรียกว่าสคริปต์ ใส่สคริปต์ใหม่ของคุณในโฟลเดอร์นี้
หากต้องการเปิดสคริปต์เพื่อแก้ไขให้คลิกสองครั้งที่ชื่อของสคริปต์ในตัวตรวจสอบหรือเปิดจากหน้าต่างโครงการ นี่เป็นการเปิดสภาพแวดล้อมการเขียนโปรแกรมที่เรียกว่า MonoDevelop
บันทึก: หากนี่เป็นครั้งแรกที่คุณเขียนโค้ดคุณควรรู้ว่ามันสามารถเพิ่มค่าได้จริง ๆ ตรวจสอบให้แน่ใจว่าคุณมีความสอดคล้องกับการสะกดคำตัวอักษรและการเปิดและปิดวงเล็บ, วงเล็บ, วงเล็บปีกกา, ใบเสนอราคา ฯลฯ นอกจากนี้ให้ระวังข้อผิดพลาดที่เกิดจากการไม่มีเครื่องหมายอัฒภาคที่ท้ายบรรทัดของรหัส
ควรมีสองส่วนที่รวมอยู่ในรหัสของคุณโดยค่าเริ่มต้น: void Start () และ void Update () เริ่มการทำงานทันทีที่วัตถุเข้ามาในเกมและการอัพเดทจะดำเนินการอย่างต่อเนื่องในขณะที่วัตถุนั้นอยู่ในเกม เราจะเพิ่มหนึ่งในสามที่เรียกว่า FixedUpdate เพื่อจัดการโปรโตคอลที่เกี่ยวข้องกับฟิสิกส์ ควรมีลักษณะเช่นนี้:
void FixedUpdate () {}
ก่อนที่เราจะสามารถป้อนคำสั่งเราจำเป็นต้องประกาศตัวแปร สิ่งนี้จะทำไปที่ด้านบนของหน้าภายในวงเล็บปีกกาต่อไปนี้ Public Class PlayerController (หรือคล้ายกัน): Monobehaviour แต่ก่อนหน้าที่ void Start () สำหรับการเคลื่อนไหวเราจะใช้ตัวแปรที่เรียกว่า "ความเร็ว" ซึ่งเราสามารถปรับเพื่อกำหนดความเร็วที่ตัวละครของเราเคลื่อนที่ไปรอบ ๆ เวที ประกาศประเภทตัวแปร (ลอย) และชื่อ (ความเร็ว) ดังนี้:
ความเร็วลอยสาธารณะ
อัฒภาคบอกโปรแกรมว่านี่คือจุดสิ้นสุดของบรรทัดของรหัส คุณจะได้รับข้อผิดพลาดหากคุณลืมใส่เครื่องหมายอัฒภาคที่ส่วนท้ายของรหัสทุกบรรทัด / มากที่สุดดังนั้นอย่าปล่อยทิ้งไว้!
ภายใต้ FixedUpdate ให้ประกาศอีกสองลอยให้ย้ายแนวนอนและเคลื่อนย้ายแนวตั้ง สิ่งเหล่านี้รับค่าขึ้นอยู่กับคำสั่งแป้นพิมพ์ของผู้ใช้และ FixedUpdate จะอัปเดตพวกเขาทุกเฟรม
float moveHorizontal = Input.GetAxis (“ แนวนอน”); float moveVertical = Input.GetAxis (“ แนวตั้ง”);
กรณีสำคัญ
ยังคงอยู่ใน FixedUpdate สร้าง Vector3 ใหม่ชนิดของตัวแปรที่มีสามมิติที่มีประโยชน์สำหรับการย้ายวัตถุไปรอบ ๆ ในพื้นที่ 3 มิติ สิ่งนี้จะใช้ค่าของอินพุตของผู้ใช้สำหรับการเคลื่อนไหวในแนวนอนและแนวตั้งและจะเป็นศูนย์ในทิศทางขึ้น / ลงเพราะในเกมนี้ผู้เล่นสามารถเคลื่อนที่ในสองมิติเท่านั้น
การเคลื่อนไหวของ Vector3 = Vector3 ใหม่ (moveHorizont, 0.0f, moveVertical);
ในที่สุดป้อนแรงที่ผู้เล่นจะเคลื่อนไปรอบ ๆ โดยใช้ rigidbody.AddForce ซึ่งเป็นโปรโตคอลที่สร้างไว้ในองค์ประกอบ rigidbody ของผู้เล่น
rigidbody.AddForce (การเคลื่อนไหว * * * * * * * * ความเร็ว Time.deltaTime);
Time.deltaTime ใช้เพื่อทำให้การเคลื่อนไหวราบรื่นขึ้น เราจะปรับตัวแปรความเร็วในภายหลังในเครื่องมือแก้ไข Unity
บันทึกไฟล์ CSharp และเปลี่ยนกลับเป็น Unity
ไปที่แผงตรวจสอบผู้เล่นและดูสคริปต์การเคลื่อนไหวที่คุณเพิ่งสร้างขึ้น ควรมีกล่องสำหรับตัวแปรสาธารณะของคุณความเร็ว คุณสามารถเปลี่ยนค่าของตัวแปรสาธารณะโดยใช้ตัวตรวจสอบ
สำหรับตอนนี้ให้ความเร็วเท่ากับตัวเลขระหว่าง 100-1,000 และคลิกปุ่มเล่นที่ด้านบนตรงกลางของหน้าจอ คุณควรจะสามารถย้ายลูกบอลไปรอบ ๆ โดยใช้ปุ่มการเคลื่อนไหวเริ่มต้นของ Unity ไม่ว่าจะเป็น ASWD หรือปุ่มลูกศร
คลิกปุ่มเล่นอีกครั้งเพื่อออกจากโหมดทดสอบ
ขั้นตอนที่ 7: เพิ่มแสงสว่าง
สร้างเกมวัตถุที่ว่างเปล่าและเรียกว่า "ไฟ" ทำสิ่งนี้โดยการคลิก GameObject ในแถบเครื่องมือด้านบนและเลือก "สร้างที่ว่างเปล่า"
สร้างแสงทิศทางด้วยการเลือกตัวเลือกจากแถบเครื่องมือ“ สร้าง” ในแผงลำดับชั้น ตั้งชื่อมันว่า "Main Light." ทำให้มันเป็นวัตถุลูกของ Lights โดยการลากในลำดับชั้นไปยังวัตถุของ Lights นี่เป็นแนวคิดที่คล้ายกันกับการวางไฟล์ลงในโฟลเดอร์
เมื่อเลือก Main Light ให้เปลี่ยนการตั้งค่าแสงในแผงตรวจสอบโดยเปลี่ยนประเภทเงาเป็น“ Soft Shadows” และความละเอียดเป็น“ ความละเอียดสูงมาก”
ในแผงตรวจสอบให้เปลี่ยนการหมุนของแสงหลักเพื่อทำมุมลงไปบนเวที ฉันใช้ 30X, 60Y, 0Z
คลิกขวาที่ไฟหลักในแผงลำดับชั้นเพื่อทำซ้ำ ตั้งชื่อ“ Fill Light” ที่ซ้ำกันและให้ลูกอยู่ใต้แสงไฟ
ทำให้ความเข้มของ Fill Light จางลงโดยการเปลี่ยนสีเป็นโทนสีฟ้าอ่อนและลดความเข้มของสนามให้เหลือ 0.1 (ในสารวัตร)
เปลี่ยนเงาเป็น“ ไม่มีเงา”
ทำมุมเติมแสงในทิศทางตรงกันข้ามของแสงหลัก สำหรับฉันนี่คือ (330, 300, 0)
ขั้นตอนที่ 8: ปรับมุมกล้องอย่างละเอียด
เราต้องการให้กล้องทำมุมเอียงเวทีเพื่อเลือกกล้องหลักในลำดับชั้นและปรับการแปลงจนกระทั่งภาพในภาพตัวอย่างกล้อง (ด้านล่างขวาของแผงฉากพร้อมกับกล้องที่เลือก) ดูดี
ฉันใช้ตำแหน่ง (0, 10.5, -10) สำหรับตำแหน่งและ (45, 0, 0) สำหรับการหมุน
คุณยังสามารถลากกล้องไปรอบ ๆ ในมุมมองฉากเพื่อจัดตำแหน่งได้หากต้องการ
ขั้นตอนที่ 9: ทำให้กล้องติดตามผู้เล่น
เราต้องการให้กล้องติดตามผู้เล่นไปรอบ ๆ หน้าจอขณะที่เคลื่อนไหว เพื่อจุดประสงค์นี้สร้างสคริปต์ที่เรียกว่า "cameraMovement" โดยการเพิ่มองค์ประกอบสคริปต์ใหม่ลงในกล้องหลักในแผงตรวจสอบ ดับเบิลคลิกที่สคริปต์เพื่อเปิดใน MonoDevelop
สคริปต์นี้จะเข้าถึง Game Object อื่นของโปรแกรมเล่นดังนั้นคุณต้องประกาศสิ่งนี้ก่อนฟังก์ชั่น Start () ของสคริปต์โดยการเขียน
ผู้เล่น GameObject สาธารณะ
สร้าง Vector3 เรียกว่า“ offset” โดยการเขียน
Vector3 ส่วนตัวชดเชย
ภายใต้ฟังก์ชัน Start () ให้กำหนดค่าออฟเซ็ตเป็น
ชดเชย = transform.position;
ซึ่งเป็นตำแหน่ง (x, y, z) ของกล้อง
ภายใต้ฟังก์ชั่นที่ชื่อว่า LateUpdate () ให้กำหนดตำแหน่งของกล้องเป็นตำแหน่งของผู้เล่นบวกด้วยการชดเชยบางส่วน:
ถือเป็นโมฆะ LateUpdate () {transform.position = player.transform.position + offset;}
บันทึกสคริปต์และกลับไปที่ Unity
เราจำเป็นต้องกำหนด Game Object ให้กับ“ ผู้เล่น” ที่เรากำหนดไว้ในสคริปต์การย้ายกล้อง เลือกกล้องหลักและดูที่แผงตรวจสอบ ภายใต้สคริปต์การเคลื่อนย้ายกล้องควรมีกล่องชื่อ“ ผู้เล่น” ขณะนี้มันถูกกำหนดให้ไม่มี (GameObject) ลาก Player จากลำดับชั้นลงในกล่องนี้เพื่อกำหนดวัตถุเกมของผู้เล่นให้กับสคริปต์การย้ายกล้อง
ต้องแน่ใจว่าได้ลากสคริปต์ใหม่ลงในโฟลเดอร์สคริปต์ (ในแผงโครงการ) ซึ่งคุณสร้างขึ้นภายใต้เนื้อหา
ลองเกมโดยคลิกที่ปุ่มเล่นที่ด้านบนตรงกลางของหน้าจอ คุณควรจะสามารถย้ายผู้เล่นไปรอบ ๆ ด้วยปุ่มลูกศรและกล้องควรติดตามการเคลื่อนไหวของคุณ
บันทึกฉากและบันทึกโครงการ
ขั้นตอนที่ 10: ทำรายการ
สร้างวัตถุเกมใหม่ มันอาจเป็นทรงกลมลูกบาศก์แคปซูลหรือทรงกระบอก ฉันใช้ลูกบาศก์
เรียกมันว่า“ รายการ”
ติดแท็กรายการเป็น“ รายการ” โดยเลือกแท็กและสร้างแท็กใหม่ที่ชื่อว่า“ รายการ” จากนั้นกลับไปที่แท็กสำหรับวัตถุเกมนั้นและเลือกแท็ก "รายการ" ใหม่ที่คุณสร้างขึ้น แท็กรายการทั้งหมดของคุณเป็นรายการ ตรวจสอบให้แน่ใจว่าคุณสะกดคำและตัวพิมพ์ใหญ่ให้ตรง
วางรายการลงในวัตถุเกมที่ว่างเปล่าที่เรียกว่า“ รายการ”
รีเซ็ตการแปลง
เพิ่ม rigidbody ให้กับ Item
ทำรายการซ้ำหลาย ๆ ครั้งแล้ววางสำเนารอบ ๆ เวที
ขั้นตอนที่ 11: ทำให้ผู้เล่นรวบรวมรายการและแสดงคะแนน
เปิดสคริปต์การเคลื่อนไหวของผู้เล่นจากแผงตรวจสอบโดยเลือกวัตถุเกม Player และแก้ไขสคริปต์เพื่อให้ผู้เล่นสามารถรวบรวมและติดตามรายการที่รวบรวมได้
ทำการประกาศสองรายการ: หนึ่งรายการเป็นตัวแปรที่ติดตามคะแนนของคุณและอีกรายการหนึ่งเป็นข้อความ GUI ที่จะแสดงคะแนนของคุณในมุมมองฉาก
การนับ int ส่วนตัว GUIText สาธารณะ countText;
ภายใต้ฟังก์ชัน void Start () ให้เริ่มต้น count และ CountText ซึ่งเป็นฟังก์ชันที่เราจะเขียนในภายหลัง
นับ = 0; CountText ();
เขียนฟังก์ชั่นใหม่สำหรับสิ่งที่เกิดขึ้นเมื่อผู้เล่นชนกับไอเท็ม นี่ควรเป็นส่วนของตัวเองเช่นเดียวกับส่วนโมฆะเริ่มต้น () และส่วนปรับปรุงโมฆะ
ถือเป็นโมฆะ OnTriggerEnter (Collider อื่น ๆ ) {ถ้า (other.gameObject.tag ==“ รายการ”)
{other.gameObject.SetActive (false);
นับ = นับ + 1;
CountText ();}
}
เขียนฟังก์ชัน CountText ซึ่งจะอัปเดตคะแนนบนหน้าจอ GUI
เป็นโมฆะ CountText () {countText.text = "จำนวน:" + count.ToString ();
}
บันทึกรหัสและสลับกลับเป็น Unity
เลือกรายการทั้งหมดของคุณตรวจสอบให้แน่ใจว่าพวกเขาถูกแท็กเป็นรายการและทำเครื่องหมายปุ่ม“ Is Trigger” ในส่วนประกอบ Box Collider ของ Inspector
นอกจากนี้ให้ตรวจสอบปุ่ม“ Is Kinematic” ภายใต้ rigidbody สิ่งนี้จะช่วยป้องกันสิ่งของของคุณตกลงมาจากพื้นโดยการปิดแรงโน้มถ่วง
สำหรับ countText ให้สร้างข้อความ GUI (ส่วนติดต่อผู้ใช้แบบกราฟิก) ใหม่โดยใช้ตัวเลือกสร้างภายใต้ลำดับชั้น
ตั้งค่าการแปลงข้อความของ GUI เป็น (0,1,0) และให้พิกเซลชดเชยที่ (10, -10) ในองค์ประกอบ GUIText บนแผงตรวจสอบ
ลากข้อความ GUI ลงในกล่องนับข้อความบนตัวตรวจสอบด้วย Player ที่เลือก
ขั้นตอนที่ 12: สร้างอันตราย
แผงที่มองเห็นยากเหล่านี้จะเปิดตัวผู้เล่นขึ้นไปในอากาศและอาจเหนือขอบสนามกีฬาซึ่งในกรณีนี้มันจะจบเกม การทำอันตรายเป็นกระบวนการที่คล้ายกันกับการทำรายการ
สร้างวัตถุเกมใหม่ที่ว่างเปล่าที่เรียกว่า "อันตราย"
สร้าง Quad ใหม่และเรียกมันว่า "Hazard"
ติดแท็กเป็นอันตรายและตรวจสอบ“ Is Trigger”
เปลี่ยนสีเพื่อให้สามารถมองเห็นได้โดยเลือก Mesh Renderer ในตัวตรวจสอบโดยเลือกอันตรายและเปลี่ยนวัสดุ คลิกรายการแบบหล่นลงตามวัสดุและใช้วงกลมสีเทาเล็ก ๆ ทางด้านขวาของกล่องเพื่อเลือกวัสดุที่แตกต่างจากสีเทาเริ่มต้นสำหรับอันตราย ฉันมีวัสดุสีขาวติดตั้งมาล่วงหน้าดังนั้นฉันจึงใช้มัน
เปลี่ยนการหมุนของอันตรายเป็น 90 เกี่ยวกับแกน X และลดความสูงของ Y เป็น -0.4 ดังนั้นมันจึงเป็นสี่เหลี่ยมสีขาวเล็ก ๆ ที่อยู่เหนือพื้นเวที
แก้ไขสคริปต์ Player ภายใต้ฟังก์ชั่น OnTriggerEnter () เพื่อให้บัญชีเป็นไปได้ว่าวัตถุที่ผู้เล่นพบมีอันตรายและไม่ใช่ไอเท็ม บอกผู้เล่นให้กระโดดถ้าเจอกับอันตราย
ถือเป็นโมฆะ OnTriggerEnter (Collider อื่น ๆ ) {ถ้า (other.gameObject.tag == "รายการ") {other.gameObject.SetActive (false); count = count + 1; CountText (); } if (other.gameObject.tag == "อันตราย") {other.gameObject.SetActive (false); Vector3 jump = Vector3 ใหม่ (0.0f, 30, 0.0f); rigidbody.AddForce (กระโดด * ความเร็ว * Time.deltaTime); }
บันทึกรหัสกลับไปที่เครื่องมือแก้ไข Unity และทำซ้ำอันตรายสองสามครั้ง
วางตำแหน่งอันตรายรอบ ๆ เวทีและลองเล่นเกม!