สารบัญ:

วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers: 6 ขั้นตอน
วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers: 6 ขั้นตอน

วีดีโอ: วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers: 6 ขั้นตอน

วีดีโอ: วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers: 6 ขั้นตอน
วีดีโอ: VONGUZA DIY : จอยเกมด้วย Arduino ??? Arduino Joystick Control DIY 2024, กรกฎาคม
Anonim
วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers
วิธีสร้างเกมผู้เล่นหลายคนด้วย Arduino Controllers

คุณเคยสงสัยหรือไม่ว่าผู้พัฒนาเกมสร้างเกมที่น่าทึ่งที่ผู้คนทั่วโลกสนุกกับการเล่นได้อย่างไร? วันนี้ฉันจะมาบอกใบ้เล็กๆ น้อยๆ เกี่ยวกับเรื่องนี้โดยการสร้างเกมที่มีผู้เล่นหลายคนขนาดเล็กซึ่งจะถูกควบคุมโดยตัวควบคุม Arduino ที่คุณสร้างขึ้นด้วย งั้นเรามาเริ่มกันเลย

เสบียง

คุณจะต้องการ:

  • โน้ตบุค
  • Unity Engine
  • C# IDE ที่ทำงานร่วมกับ Unity เช่น visual studio หรือ Atom (ฉันจะใช้ Visual Studio Code)
  • 2X Arduino นาโน
  • 2X กระดานขนมปังใหญ่
  • 2X กระดานขนมปังขนาดเล็ก
  • สวิตช์แทค 4X (ปุ่มกด)
  • ตัวต้านทาน 4X200Ω
  • สายจัมเปอร์ชายกับชาย 12X
  • Arduino IDE

มันจะมีประโยชน์ถ้าคุณมีความเข้าใจพื้นฐานเกี่ยวกับการใช้ Unity แต่มันจะไม่ส่งผลต่อความคืบหน้าของคุณ เนื่องจากคุณจะคุ้นเคยกับมันในขณะที่ทำเกมต่อไป

ลิงค์สำหรับดาวน์โหลด Unity Engine:

store.unity.com/download-nuo

ลิงค์สำหรับดาวน์โหลด Visual Studio Code IDE:

code.visualstudio.com/download

ลิงค์สำหรับดาวน์โหลด Arduino IDE:

www.arduino.cc/en/Main/Software

ขั้นตอนที่ 1: ตั้งค่าเส้นขอบของเกม

ตั้งค่าเส้นขอบของเกม
ตั้งค่าเส้นขอบของเกม
ตั้งค่าเส้นขอบของเกม
ตั้งค่าเส้นขอบของเกม
ตั้งค่าเส้นขอบของเกม
ตั้งค่าเส้นขอบของเกม

ก่อนอื่นคุณต้องดาวน์โหลดความสามัคคี

เมื่อเสร็จแล้วคุณสามารถเริ่มตั้งค่ามุมมองของเกมได้

เปิดโปรเจ็กต์ Unity ใหม่ ตั้งชื่อและเลือกเกม 2D

เมื่อเปิดโครงการให้สังเกตว่ามี 3 ส่วนหลักเรียกว่า

  • ลำดับชั้น (นี่คือที่ที่วัตถุและรายละเอียดเกมทั้งหมดของคุณจะถูกเพิ่มเข้าไป)
  • ฉาก (ที่คุณตั้งค่ามุมมองของเกม)
  • เกม (ซึ่งคุณสามารถทดสอบว่าเกมจริงจะเป็นอย่างไร)

สังเกตว่าภายใต้ลำดับชั้นมีฉากของคุณและภายใต้ฉากนั้นมี "กล้องหลัก" เมื่อคุณเลือกกล้องจากลำดับชั้น กล้องจะถูกเลือกในฉาก

(สิ่งใดก็ตามที่อยู่ในขอบเขตของกล้องนี้จะแสดงในเกมจริง)

ดูภาพ 1

เกมของเราประกอบด้วยกระดานสองแผ่น ลูกบอลที่เคลื่อนที่ไปรอบๆ และเส้นขอบที่จำกัดการเคลื่อนที่ของกระดานและลูกบอล

เริ่มต้นด้วยการสร้างเส้นขอบ

  1. ในการสร้างวัตถุเกมใหม่ เลือก สินทรัพย์>สร้าง>สไปรท์>สี่เหลี่ยม (ตั้งชื่อว่า "ขอบขวาและซ้าย") ดูรูปที่ 2
  2. ลากและวางเส้นขอบขวาและซ้ายไปยังลำดับชั้น จากนั้นสี่เหลี่ยมจัตุรัสจะปรากฏขึ้นในฉาก
  3. ปรับตำแหน่งแกน x เป็น (5) “ขอบขวาและซ้าย”>สารวัตร>แปลง>ตำแหน่ง>X ดูภาพ3
  4. จากนั้นปรับขนาดให้ใหญ่พอที่จะปิดขอบกล้องได้ (ลากด้านบนและด้านล่างของสี่เหลี่ยมจัตุรัสเพื่อยืดออก)
  5. ปรับสี “จากขอบขวาและซ้าย”>สารวัตร>สไปรท์เรนเดอร์>สี ดูภาพ3
  6. เลื่อนลงมาในตัวตรวจสอบและเลือกเพิ่มส่วนประกอบ จากนั้นพิมพ์ Rigidbody2D แล้วกด Enter ซึ่งโดยทั่วไปแล้วจะเป็นการเพิ่มฟิสิกส์ให้กับวัตถุในเกมของคุณ เนื่องจากให้การตรวจจับมวล แรงโน้มถ่วง และการชนกัน อย่างไรก็ตาม เราไม่ต้องการแรงโน้มถ่วงในเกมของเรา ดังนั้นให้สร้างแรงโน้มถ่วงเป็น 0 แทน 1 คุณจะต้องหยุดตำแหน่งและการหมุนเพื่อไม่ให้เส้นขอบเคลื่อนที่เมื่อชนกัน ดูภาพ4
  7. เลือกเพิ่มองค์ประกอบจากนั้นพิมพ์ Box Collider 2D แล้วกด Enter สิ่งนี้จะเพิ่มพื้นที่รอบ ๆ วัตถุเกมที่สามารถตรวจจับการชนได้ ดูภาพ4
  8. ตอนนี้เลือกเส้นขอบขวาและซ้ายแล้วกด (ctrl+d) เพื่อทำซ้ำ
  9. เปลี่ยนชื่อเป็น "ขอบซ้าย" และเปลี่ยนชื่ออันแรก ("ขอบขวา")
  10. เลือกเส้นขอบด้านซ้ายและปรับตำแหน่งแกน x เป็น (-5) ด้วยวิธีเดียวกันในขั้นตอนที่ 3 ตอนนี้คุณมีเส้นขอบด้านขวาและด้านซ้าย

ทำซ้ำ 10 ขั้นตอนก่อนหน้าด้วยเส้นขอบขึ้นและลง แล้วเปลี่ยนตำแหน่ง y ของช่องสี่เหลี่ยมแทนตำแหน่ง x ตัวอย่างสุดท้ายควรเป็นสิ่งที่คล้ายกับในภาพ

ดูรูปที่ 5

ขั้นตอนที่ 2: การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์

การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์
การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์
การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์
การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์
การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์
การเพิ่มบอร์ดและการสร้างคอนโทรลเลอร์

การเพิ่มบอร์ด

สร้างวัตถุเกมใหม่และตั้งชื่อผู้เล่น 1

ปรับ:

  • มาตราส่วน: X(1.2), Y(0.15), Z(1)
  • ตำแหน่ง: X(0), Y(-3.6), z(0)
  • เพิ่ม BoxCollider2D
  • เพิ่ม Rigidbody 2D และตรึงแกน y และ z

ทำซ้ำ (ctrl+d) และเปลี่ยนชื่อเครื่องเล่นคัดลอก 2

ปรับ:

  • มาตราส่วน: X(1.2), Y(0.15), Z(1)
  • ตำแหน่ง: X(0), Y(3.6), z(0)
  • BoxCollider จะอยู่ที่นั่นแล้ว
  • Rigidbody 2D จะอยู่ที่นั่นแล้ว และแกน y และ z จะถูกตรึงไว้แล้ว

ดูภาพ 1

ทำคอนโทรลเลอร์

คุณจะต้องการ:

  • 2X Arduino นาโน
  • 2X กระดานขนมปังใหญ่
  • 2X กระดานขนมปังขนาดเล็ก
  • สวิตช์แทค 4X (ปุ่มกด)
  • ตัวต้านทาน 4X
  • สายจัมเปอร์ชายกับชาย 12X

ตอนนี้ดูรูปถ่ายกระดานขนมปังและการทำแผนที่เพื่อประกอบจอยสติ๊ก

  1. แนบชิป Arduino Nano หนึ่งตัวกับบอร์ดขนมปังขนาดเล็ก
  2. แนบสวิตช์แทค 2 อันบนกระดานขนมปังขนาดใหญ่ตามที่แสดงในภาพ พยายามให้ด้านขวามือของกระดานขนมปังสมมาตรกับด้านซ้ายมือหนึ่งอันจะทำให้จอยสติ๊กดูดีขึ้น (คุณสามารถใช้คอลัมน์ที่ 30 เป็นแบบสมมาตรได้ ไลน์)
  3. เชื่อมต่อพินซ้ายบนของปุ่มซ้ายกับพิน 5V ใน Arduino บนบอร์ดขนมปังขนาดเล็ก (สิ่งที่เชื่อมต่อกับคอลัมน์เดียวกันในเขียงหั่นขนมเชื่อมต่อกัน)
  4. เชื่อมต่อพินบนขวาของปุ่มขวากับพิน 5V ใน Arduino
  5. เชื่อมต่อพินขวาล่างของปุ่มซ้ายกับจุดบนคอลัมน์ที่ 31 โดยใช้ตัวต้านทาน
  6. เชื่อมต่อพินซ้ายล่างของปุ่มขวากับจุดบนคอลัมน์ที่ 29 โดยใช้ตัวต้านทาน
  7. เชื่อมต่อตัวต้านทานกับขา GND ใน Arduino
  8. เชื่อมต่อพินบนขวาของปุ่มซ้ายกับพิน D3 ใน Arduino
  9. เชื่อมต่อพินซ้ายบนของปุ่มขวากับพิน D9 ใน Arduino
  10. ทำซ้ำขั้นตอนเหล่านี้และสร้างตัวควบคุมที่สอง

ขั้นตอนที่ 3: เชื่อมต่อ Arduino กับพอร์ตอนุกรม

การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม
การเชื่อมต่อ Arduino กับพอร์ตอนุกรม

ก่อนอื่นคุณต้องติดตั้ง Arduino IDE

เมื่อติดตั้งแล้ว คุณสามารถเริ่มต้นได้โดยการสร้างโปรแกรม Arduino ที่รับอินพุตจากปุ่มต่างๆ และเก็บไว้ในพอร์ตอนุกรม (พอร์ต COM) เมื่อบอร์ด Arduino เชื่อมต่อกับแล็ปท็อปของคุณ ระบบปฏิบัติการจะรับรู้บอร์ดโดยอัตโนมัติว่าเป็นพอร์ตอนุกรม ซึ่งสามารถอัปโหลดโปรแกรมได้ ค่าที่เก็บไว้ในพอร์ตอนุกรมสามารถใช้ในขั้นตอนถัดไปเมื่อเราเชื่อมต่อ Unity Engine กับพอร์ตอนุกรม

ทีนี้มาเชื่อมต่อ Arduino กับพอร์ตอนุกรมกัน

ดูที่ภาพ

  1. เชื่อมต่อ Arduino กับแล็ปท็อปของคุณ
  2. เครื่องมือ>บอร์ด>Arduino Nano
  3. หากชิป Arduino ของคุณเป็นรุ่นล่าสุด (2018-2020) เครื่องมือ>โปรเซสเซอร์>ATmega328P (Bootloader รุ่นเก่า)
  4. หากชิป Arduino ของคุณไม่ล่าสุด (ก่อนปี 2018) เครื่องมือ>โปรเซสเซอร์>ATmega328P
  5. เครื่องมือ>พอร์ต>COM (ไม่ว่าหมายเลขใดจะปรากฏขึ้น ในกรณีของฉันคือ 10) * นี่คือพอร์ตอนุกรมที่จะเก็บค่าต่างๆ
  6. คัดลอกโค้ดและวางลงใน Arduino IDE แล้วกด ctrl+u เพื่ออัปโหลดโปรแกรม
  7. ทำซ้ำกับ Arduino ตัวที่สอง (เมื่อทำขั้นตอนที่ 5 ตรวจสอบให้แน่ใจว่าได้เลือกพอร์ต COM อื่นเพื่อไม่ให้คอนโทรลเลอร์ทั้งสองเชื่อมต่อกับพอร์ตอนุกรมเดียวกัน)

รหัส:

การตั้งค่าเป็นโมฆะ () {

Serial.begin(9600); โหมดพิน (3, อินพุต); //บอกให้ Arduino รับอินพุตจากพิน D3 pinMode(9, INPUT); //บอกให้ Arduino รับอินพุตจากพิน D9 } void loop() { if(digitalRead(3)==1){ /* หาก Arduino ได้รับอินพุต 1 Serial.write (1); จากพิน 3 ส่งออกค่า 1 ไปยังพอร์ตอนุกรม Serial.flush(); */ ล่าช้า(2); } if(digitalRead(9)==1){ /* หาก Arduino ได้รับอินพุต 1 Serial.write(2); จากพิน 9 ส่งออกค่า 2 ไปยังพอร์ตอนุกรม Serial.flush(); */ ล่าช้า(2); } }

คำอธิบายของโปรแกรม:

รหัสนี้ใช้อินพุตจากพิน D3 และพิน D9 ใน Arduino ซึ่งเชื่อมต่อกับปุ่มต่างๆ ปุ่มต่างๆ ถูกกดหรือไม่ถูกกด ซึ่งหมายความว่าการอ่านที่นำมาจากปุ่มนั้นเป็น 1 (กด) หรือ 0 (ไม่ได้กด) หากอินพุตจากปุ่มขวา (จาก D9) เป็น 1 (กด) ให้เก็บค่า 1 ในพอร์ตอนุกรม หากอินพุตจากปุ่มซ้าย (จาก D3) เป็น 1 (กด) ให้เก็บค่า 2 ในพอร์ตอนุกรม

ขั้นตอนที่ 4: การเชื่อมต่อ Unity ด้วย Serial Port

การเชื่อมต่อ Unity ด้วย Serial Port
การเชื่อมต่อ Unity ด้วย Serial Port
การเชื่อมต่อ Unity ด้วย Serial Port
การเชื่อมต่อ Unity ด้วย Serial Port

สำหรับขั้นตอนนี้ เราจะระบุพอร์ตอนุกรมใน Unity เพื่อให้สามารถรับอินพุตจาก Arduino เมื่อกดปุ่ม ติดตั้ง Visual Studio Code บนแล็ปท็อปของคุณ จากนั้นไปที่ Unity เลือกผู้เล่น 1 จากลำดับชั้น เลื่อนลงและเลือกเพิ่มองค์ประกอบแล้วพิมพ์ player1_motion จากนั้นกด Enter ดูภาพ 1

สคริปต์ C# จะถูกสร้างขึ้นในตัวตรวจสอบ คลิกขวาที่มันและเลือกแก้ไขสคริปต์ รหัส Visual Studio ควรเปิดขึ้นและจะแสดงรหัสเริ่มต้นที่ดูเหมือนภาพที่ 2

คัดลอกรหัสต่อไปนี้แล้วเปลี่ยน "SerialPort sp = new SerialPort("COM10", 9600);" ด้วย SerialPort sp = ใหม่ SerialPort ("พอร์ต COM ที่ Arduino ของคุณเชื่อมต่ออยู่", 9600); คุณสามารถค้นหาของเขาได้โดยกลับไปที่รหัส Arduino ของคุณและไปที่ Tools>Port>COM (หมายเลขใดก็ตามที่ปรากฏ)

รหัส:

ใช้ System. Collections;

ใช้ System. Collections. Generic; ใช้ UnityEngine; ใช้ System. IO. Ports; คลาสสาธารณะ player1_motion: MonoBehavior { ความเร็วลอย = 8; จำนวนลอยส่วนตัวเพื่อย้าย; SerialPort sp = SerialPort ใหม่ ("COM10", 9600); // เริ่มถูกเรียกก่อนการอัพเดตเฟรมแรกเป็นโมฆะ Start() { sp. Open(); sp. ReadTimeout = 1; } // Update ถูกเรียกหนึ่งครั้งต่อเฟรม void Update() { amounttomove = speed*0.01f; if(sp. IsOpen){ ลอง { moveObject(sp. ReadByte()); พิมพ์(sp. ReadByte()); } จับ (System. Exception){ } } } โมฆะ moveObject (ทิศทาง int) { ถ้า (ทิศทาง == 1) { transform. Translate (Vector3.left * amounttomove, Space. World); } if(ทิศทาง == 2){ transform. Translate(Vector3.right*amounttomove, Space. World); } } }

คำอธิบายของรหัส:

รหัสนี้บอกให้ความสามัคคีรับอินพุตจากพอร์ตอนุกรม (COM 10) เมื่อกดปุ่มซ้าย Arduino จะส่งค่า 1 ไปยังพอร์ตอนุกรมหากความสามัคคีได้รับ 1 จากพอร์ตอนุกรมความเร็วจะถูกเพิ่มไปยังวัตถุเกม "ผู้เล่น 1" ในทิศทางซ้าย เมื่อกดปุ่มขวา Arduino จะส่งค่า 2 ไปยังพอร์ตอนุกรมหากความสามัคคีได้รับ 2 จากพอร์ตอนุกรมความเร็วจะถูกเพิ่มไปยังวัตถุเกม "ผู้เล่น 1" ในทิศทางที่ถูกต้อง หากพอร์ตอนุกรมไม่ได้รับค่าจากพอร์ตอนุกรม จะไม่มีการเพิ่มความเร็วในทั้งสองทิศทาง ดังนั้น บอร์ดจะอยู่กับที่

หลังจากที่คุณคัดลอกโค้ดแล้ว ให้กด F5 เพื่อสร้างและเรียกใช้โค้ด กลับสู่ความสามัคคีแล้วกดปุ่มเล่น ผู้เล่น 1 ควรเลื่อนไปทางขวาเมื่อคุณกดขวาและซ้ายเมื่อคุณกดซ้าย

ตอนนี้ ทำตามขั้นตอนเดิมอีกครั้ง แต่กับผู้เล่น 2 และอย่าลืมเขียนใน 'เพิ่มส่วนประกอบ' player2_motion แทน player1_motion และระบุพอร์ต COM ที่สองที่คอนโทรลเลอร์ตัวที่สองเชื่อมต่ออยู่ ไม่ใช่พอร์ตอนุกรมเดียวกัน

คุณจะต้องเปลี่ยน "public class player1_motion: MonoBehaviour" เป็น "public class player2_motion: MonoBehaviour" ในโค้ดด้วย

ขั้นตอนที่ 5: การเพิ่ม Ball

การเพิ่มลูก
การเพิ่มลูก
การเพิ่มลูก
การเพิ่มลูก
การเพิ่มลูก
การเพิ่มลูก
  1. เพิ่มวัตถุเกมใหม่ แต่คราวนี้เลือกวงกลมแทนสี่เหลี่ยม
  2. เปลี่ยนชื่อเป็น "บอล"
  3. ลากและวางในลำดับชั้น
  4. ปรับขนาด (X:0.2 - Y:0.2 - Z: 0.2)
  5. เพิ่ม Rigidbody 2D และตรึงแกน Z เท่านั้น
  6. เปลี่ยนมวลเป็น 0.0001
  7. เปลี่ยนมาตราส่วนแรงโน้มถ่วงเป็น 0
  8. เพิ่ม Box Collider 2D
  9. ไปที่ สินทรัพย์>สร้าง>วัสดุฟิสิกส์ 2D ดูรูปภาพ 1
  10. เปลี่ยนชื่อเป็น "เด้ง"
  11. เปลี่ยนแรงเสียดทานเป็นศูนย์จากผู้ตรวจสอบ
  12. เปลี่ยนความเด้งเป็น 1 จากสารวัตร
  13. ลากและวาง "เด้ง" ลงใน Rigidbody 2D>Material ดูรูปภาพ 2
  14. เลือก "ball" อีกครั้งจากลำดับชั้นและไปที่เพิ่มส่วนประกอบแล้วพิมพ์ Ball_movement จากนั้นกด Enter
  15. คลิกขวาที่สคริปต์และเลือกแก้ไขสคริปต์
  16. คัดลอกโค้ดด้านล่างแล้วกด F5 เพื่อสร้างและเรียกใช้

รหัส:

ใช้ System. Collections;

ใช้ System. Collections. Generic; ใช้ UnityEngine; คลาสสาธารณะ Ball_movement: MonoBehaviour {// เริ่มถูกเรียกก่อนการอัพเดตเฟรมแรก แรงลอยส่วนตัว = 2; เป็นโมฆะ เริ่ม () { StartCoroutine (ย้าย ()); } IEnumerator ย้าย () { ผลตอบแทนกลับมา WaitForSeconds (2) ใหม่; GetComponent(). AddForce(ใหม่ Vector2(1f, 0.5f)*0.02f*force); } }

คำอธิบายของรหัส

รหัสนี้ทำให้ลูกบอลมีความเร็วทั้งสองทิศทางในทิศทาง X และทิศทาง Y ด้วยขนาดเท่ากัน ซึ่งทำให้ลูกบอลเคลื่อนที่ในมุม 45° ในขั้นตอนที่ 8 เราได้เพิ่มวัสดุฟิสิกส์ให้กับลูกบอลและเปลี่ยนความกระเด้งกลับ ซึ่งจะคงการเคลื่อนที่ของลูกบอลตลอดทั้งเกม

ขั้นตอนที่ 6: จบเกม

จบเกม
จบเกม
จบเกม
จบเกม
จบเกม
จบเกม
จบเกม
จบเกม

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

  1. ลากและวางลูกบอลจากลำดับชั้นไปยังโปรเจ็กต์ คุณได้สร้างลูกบอลสำเร็จรูปไว้เพื่อใช้ในภายหลัง
  2. คลิกขวาที่ลำดับชั้นและเลือก Create Empty วัตถุที่ว่างเปล่าจะปรากฏขึ้น เปลี่ยนชื่อเป็นลูกบอลเกิดใหม่ และเปลี่ยนตำแหน่งให้เหมือนกับตำแหน่งของลูกบอล
  3. คลิกขวาที่ลำดับชั้นและเลือก UI>>Text โปรดสังเกตว่าข้อความมาพร้อมกับผืนผ้าใบ ตำแหน่งของข้อความในเกมขึ้นอยู่กับตำแหน่งของข้อความในผืนผ้าใบ ไม่ใช่ในขอบเขตของเกมของเรา (ดูรูปที่ 1).
  4. เปลี่ยนตำแหน่งของข้อความไปที่ใดก็ได้ที่คุณต้องการ
  5. ทำซ้ำขั้นตอนที่ 3 และ 4 อีกครั้งสำหรับคะแนนของผู้เล่นคนที่สอง
  6. พิมพ์ข้อความแรก "ผู้เล่น 1 คะแนน: 0" และพิมพ์ข้อความที่สอง "ผู้เล่น 2 คะแนน: 0" (ดูรูปที่ 2).
  7. สร้างสคริปต์ในขอบด้านบนที่เรียกว่า p1wins และคัดลอกโค้ดต่อไปนี้

รหัส:

ใช้ System. Collections;

ใช้ System. Collections. Generic; ใช้ UnityEngine; ใช้ UnityEngine. SceneManagement; ใช้ UnityEngine. UI; p1wins ระดับสาธารณะ: MonoBehavior { คะแนนข้อความสาธารณะ; ball_respawn การแปลงสาธารณะ; บอล GameObject สาธารณะ; int ส่วนตัว p1 = 0; // Start ถูกเรียกก่อนการอัพเดทเฟรมแรกเป็นโมฆะ Start() { } // Update ถูกเรียกหนึ่งครั้งต่อเฟรม void Update() { score.text = "Player 1 Score:" + p1; } โมฆะ OnCollisionEnter2D (Collision2D อื่น ๆ) { if (other.gameObject.tag == "Ball") { ทำลาย (other.gameObject); p1++; ยกตัวอย่าง(บอล, ball_respawn.position, ball_respawn.rotation); } } }

8. ลากและวางลูกสำเร็จรูปจากโครงการในขั้นตอนที่ 1 ลงในพารามิเตอร์ Ball (ดูรูปที่ 3)

9. ลากและวางลูกบอลเกิดใหม่จากลำดับชั้นไปยังพารามิเตอร์ Ball-rerspawn (ดูรูปที่ 3)

10. ลากและวางผู้เล่น 1 คะแนนจากลำดับชั้นไปยังพารามิเตอร์คะแนน (ดูรูปที่ 3)

คำอธิบายของรหัส:

เมื่อลูกบอลชนกับขอบบน มันจะทำลายและเกิดใหม่อีกครั้งที่ตำแหน่ง ball_respawn ที่เรากำหนดไว้ในขั้นตอนที่ 2 เป้าหมายของการทำให้ลูกบอลเป็นแบบสำเร็จรูปคือการสามารถเกิดใหม่ได้พร้อมกับคุณสมบัติทั้งหมด มิฉะนั้น หากเราใช้ลูกบอล จากลำดับชั้น มันจะเกิดใหม่แต่จะไม่เคลื่อนที่ นอกจากนี้ เมื่อลูกบอลชนกับขอบบน ค่าที่เดิมเท่ากับ 0 เรียกว่า p1 เพิ่มขึ้น 1 ค่านี้จะแสดงเป็นข้อความ ดังนั้นเมื่อลูกบอลชนกับขอบด้านบน คะแนนของผู้เล่น 1 จะเพิ่มขึ้น 1

ตอนนี้ทำขั้นตอนที่ 7, 8, 9 และ 10 สำหรับขอบล่าง

สำหรับขั้นตอนที่ 7 ให้สร้างสคริปต์ชื่อ p2wins และคัดลอกโค้ดต่อไปนี้แทน

สำหรับขั้นตอนที่ 10 ให้ลากและวางคะแนนผู้เล่น 2 จากลำดับชั้นไปยังพารามิเตอร์ Score

รหัส:

ใช้ System. Collections;

ใช้ System. Collections. Generic; ใช้ UnityEngine; ใช้ UnityEngine. SceneManagement; ใช้ UnityEngine. UI; p2wins คลาสสาธารณะ: MonoBehavior { คะแนนข้อความสาธารณะ; ball_respawn การแปลงสาธารณะ; บอล GameObject สาธารณะ; int ส่วนตัว p2 = 0; // Start ถูกเรียกก่อนการอัพเดทเฟรมแรกเป็นโมฆะ Start() { } // Update ถูกเรียกหนึ่งครั้งต่อเฟรม void Update() { score.text = "Player 2 Score:" + p2; } โมฆะ OnCollisionEnter2D (Collision2D อื่น ๆ) { if (other.gameObject.tag == "Ball") { ทำลาย (other.gameObject); หน้า 2++; ยกตัวอย่าง(บอล, ball_respawn.position, ball_respawn.rotation); } } }

แนะนำ: