วิธีสร้างเกม Pong - hyperPong

หมายเหตุ: แฟ้มโปรเจ็กที่เสร็จสมบูรณ์สำหรับบทช่วยสอนนี้สามารถพบได้ที่ต่ำสุดของบทความนี้.
บทนำ
ในบทช่วยสอนนี้ เราจะสร้างเกมที่เหมือน Pong จากพื้นฐาน เราจะครอบคลุมฟีเจอร์และพฤติกรรมที่ซับซ้อนมากขึ้นใน hyperPad ดังนั้นบทช่วยสอนนี้จึงสมมติว่ามีความรู้เบื้องต้นเกี่ยวกับตัวแก้ไข hyperPad หากคุณคิดว่าคุณต้องทำความคุ้นเคยกับการสร้างเกมจากศูนย์ คุณสามารถตรวจสอบ คู่มือที่สมบูรณ์ - การสร้างเกมแพลตฟอร์ม ก่อน.
Pong เป็นเกมสองผู้เล่นที่เรียบง่ายซึ่งประกอบด้วยเพียงสองแพดและลูกบอล และสามารถถูกมองว่าเป็นเวอร์ชันดิจิตอลที่เรียบง่ายของเทเบิลเทนนิส ผู้เล่นแต่ละคนควบคุมแพดที่อยู่ฝั่งตรงข้ามของโต๊ะ แพดสามารถเคลื่อนที่ได้เพียงไปข้างหน้าและย้อนกลับ โดยตีลูกบอลไปยังผู้เล่นอีกฝ่าย หากผู้เล่นคนใดพลาดลูกบอล ผู้เล่นอีกคนจะได้รับคะแนน ผู้เล่นคนแรกที่ได้ 11 คะแนนจะชนะ!
สำหรับเกม Pong ของเรา เราจะรวมตัวเลือกการเล่นในโหมดผู้เล่น 1 (ผู้เล่น vs. AI), โหมดผู้เล่น 2 (ผู้เล่น vs. ผู้เล่น) หรือโหมด 0 ผู้เล่น "ดู" (AI vs. AI).
ส่วนที่ 1: การตั้งค่าโปรเจ็กต์และเมนูหลัก
มาทำกันเถอะ เราจะเริ่มต้นโดยการสร้างโปรเจ็กต์ใหม่.
เปิดเมนูโปรเจ็กต์ใน hyperPad และแตะโปรเจ็กต์ใหม่ ตั้งชื่อโปรเจ็กต์ของคุณแล้วแตะถัดไป การจัดแนวสามารถตั้งค่าเป็นโหมดแนวนอนเริ่มต้น สำหรับบทช่วยสอนนี้ การสนับสนุนอุปกรณ์ตั้งไว้ที่ iPad 4:3 บนหน้าจอถัดไป ให้เลือก "มุมมองจากด้านบน" และให้ค่าที่เหลือเป็นค่าดีฟอลต์.
ตอนนี้เราได้โปรเจ็กต์ใหม่พร้อมใช้งานแล้ว มาตั้งค่าเมนูหลักอย่างรวดเร็วก่อนที่จะกระโดดเข้าไปในเกมเลยดีกว่า สิ่งแรกที่เราจะทำคือตั้งชื่อฉากของเราเป็น "เมนูหลัก".
แตะปุ่มเมนูโปรเจ็กต์/ฉาก และแตะปุ่มเกียร์ข้าง "ฉาก 1" ของเรา.
แตะตัวเลือกการตั้งค่าและเปลี่ยนชื่อฉากของเราเป็น "เมนูหลัก". แตะบันทึกเพื่อบันทึกและปิดหน้าต่างการตั้งค่า.
ถัดไป เพื่อความเป็นธรรมชาติในเกมย้อนยุคในยุคแรก ๆ เช่น Pong ในตู้เกม เราสามารถตั้งค่าสีพื้นหลังเป็นสีดำ.
แตะปุ่มการตั้งค่าสถานที่และเลือกพื้นหลัง แตะปุ่ม "เปลี่ยนสี" และตั้งค่าเป็นสีดำ (#000000FF).
ตอนนี้ให้เราเพิ่มป้ายชื่อไปยังเมนูหลักของเรา แตะปุ่มวัตถุพิเศษและเลือกป้ายชื่อ.
กรอกรชื่อเกมของคุณในช่องข้อความ ("hyperPong" ได้ถูกกรอกไว้สำหรับบทช่วยสอนนี้) ตั้งค่าให้ขนาดฟอนต์ใหญ่อะไรซักอย่างแต่ไม่มากเกินไป สำหรับชื่อ "hyperPong" ขนาด 72 จุดจะถือว่าดี เปลี่ยนสีเป็นสีขาว (#FFFFFFFF) และวางไว้กลางเมนูใกล้ด้านบน.
ตอนนี้เรามีฉากเมนูหลักที่ต้องเติมเต็มด้วยปุ่มสำหรับโหมดการเล่นทั้งหมดของเรา เราจะปล่อยให้เมนูดังกล่าวตามสถานะนี้ในขณะนี้ และเราจะทำให้มันเสร็จสมบูรณ์หลังจากที่เรามีเกมที่เล่นได้.
ส่วนที่ 2: การตั้งค่าฉากเกมและแพด
แตะปุ่มเมนูโปรเจ็กต์และแตะ "เพิ่มฉาก" ชื่อมันว่า "เกม" และแตะสร้าง ตอนนี้ในฉากเกมคุณควรเห็นผืนผ้าใบว่าง ๆ เช่นเดียวกับที่ทำกับฉากเมนูหลัก ไปข้างหน้าและแตะที่ปุ่มการตั้งค่าสถานที่อีกครั้งและเปลี่ยนพื้นหลังเป็นสีดำ (#000000FF).
เริ่มต้นสร้างแพดของผู้เล่นกันเถอะ สร้างวัตถุที่ว่างโดยไปที่ปุ่มวัตถุพิเศษและเลือก "วัตถุว่าง" เปลี่ยนสีเป็นสีขาว (#FFFFFFFF) และตรวจสอบให้แน่ใจว่าแถบความทึบเต็ม.
เปลี่ยนชื่อวัตถุเป็น "ผู้เล่น-1" และตั้งโหมดฟิสิกส์เป็นฟิสิกส์ และปล่อยให้การผ่านได้เปิดใช้งาน.
เหตุผลที่เราจะยังคงเปิดใช้งานการผ่านได้นั้นเพื่อให้เรามีการควบคุมที่ดีกว่าที่ลูกบอลจะโต้ตอบกับแพดเมื่อมันกระทบกับมัน เราจะต้องการควบคุมความเร็วและทิศทางที่ลูกบอลเคลื่อนที่ด้วยตนเอง.
ในคุณสมบัติของวัตถุผู้เล่น-1 ไปที่แท็บการเปลี่ยนแปลงและตั้งค่าสเกล X ให้เป็น 25% และย้ายไปทางด้านซ้ายของสนามเกม.
ต่อไปเราจะเพิ่มบางตัวควบคุมให้กับแพดของเราเพื่อให้มันเคลื่อนที่ได้ โดยที่เราเลือกแพดให้ไปที่ตัวแก้ไขพฤติกรรมโดยกลับไปที่แท็บฟิสิกส์.
วางพฤติกรรม Joystick Analog ซึ่งพบได้ในหมวดการโต้ตอบ (ถ้าคุณไม่สามารถหามันได้ คุณอาจต้องแตะที่แท็บขั้นสูง). สิ่งนี้จะสร้างจอยสติ๊กให้คุณโดยอัตโนมัติในตัวแก้ไขฉาก.
แต่เราไม่ต้องการให้แพดเคลื่อนที่ได้โดยแค่การเคลื่อนที่แบบจอยสติ๊กเท่านั้น เราต้องการให้ AI ทำการเคลื่อนที่ได้ด้วยเช่นกัน.
ภายใต้หมวดส่วนบุคคล ให้วางกล่อง Container ลงไป นี่จะใช้เก็บทิศทางที่แพดจะเคลื่อนที่แบบนี้ ทำให้ไม่ว่าจะถูกควบคุมโดยผู้เล่นที่จอยสติ๊กหรือ AI ที่ทำการคำนวณ ค่าสามารถเปลี่ยนได้โดยการเปลี่ยนค่าตัวแปรนี้ ค่าดีฟอลต์ควรตั้งไว้ที่ 0 และเป็นความคิดที่ดีที่จะตั้งชื่อให้น่าสนใจเพื่อให้ง่ายต่อการทำงาน "ทิศทางการเคลื่อนที่" ดูเหมือนน่าสนใจ.
เมื่อเลือก Box Container ให้กดปุ่ม "เปลี่ยนฟิลด์การป้อนข้อมูล" และแตะใช่ นี่จะสร้างพฤติกรรม Set Input Field สำหรับกล่องคอนเทนเนอร์ซึ่งจะช่วยให้เราสามารถเปลี่ยนค่าของมันเมื่อเราต้องการ เชื่อมต่อ Set Input Field ไปยัง Joystick Analog.
เมื่อเลือกพฤติกรรม Set Input Field ให้ลากค่าผลลัพธ์จาก Joystick Analog ลงในฟิลด์ New Value เลือกคุณสมบัติ "y" ตอนนี้กล่องผู้กำกับทิศทางการเคลื่อนที่จะติดตามความสูงที่ผู้เล่นเลื่อนจอยสติ๊กขึ้นหรือลง (แกน y).
ตอนนี้เราต้องติดตามความระยะการเคลื่อนที่ขึ้นหรือลงด้วยจอยสติ๊ก เราต้องการรีเซ็ตค่าของมันให้เป็น 0 หากผู้เล่นปล่อยจอยสติ๊ก ไม่เช่นนั้นแพดจะยังคงเคลื่อนที่ต่อไปในทิศทางสุดท้ายที่มันจำได้.
ภายใต้หมวดการโต้ตอบให้เพิ่มพฤติกรรม Stopped Touching และแตะมันเพื่อเปิดคุณสมบัติของมัน โดยค่าเริ่มต้นมันจะติดตามเมื่อผู้เล่นหยุดสัมผัสแพด แต่เราต้องการติดตามเมื่อผู้เล่นหยุดสัมผัสจอยสติ๊ก.
แตะคุณสมบัติของวัตถุเพื่อเปลี่ยนมันและเลือกจอยสติ๊ก คุณอาจต้องเลือกชั้น UI ทั่วไปเพื่อให้สามารถเลือกได้ เมื่อเลือกแล้วให้แตะปุ่มตรวจสอบ พฤติกรรมควรจะแสดงให้เห็นว่าจอยสติ๊กเป็นวัตถุที่ติดตามอยู่.
แตะบน Set Input Field ที่เราได้ทำไว้ก่อนหน้านี้และทำให้มันซ้ำกัน โดยที่ Set Input Field สำเนานั้นเชื่อมต่อกับพฤติกรรม Stopped Touching และตั้งค่าคุณสมบัติ New Value ของมันเป็น 0.
ตอนนี้ตัวแปร Move Direction ของเราจะติดตามการเคลื่อนที่ขึ้นและลงของจอยสติ๊ก และรีเซ็ตให้เป็น 0 เมื่อตัดการเชื่อมต่อจอยสติ๊ก นั่นทำให้เรามีวิธีที่ยอดเยี่ยมในการบอกแพดว่าเราจะทำยังไงต่อไป ดังนั้นให้เราดำเนินการและกำหนดการเคลื่อนที่ให้กับแพดกันเถอะ.
ภายใต้หมวดส่วนบุคคลให้ดรอปลงพฤติกรรม Timer ในคุณสมบัติให้ตั้งค่าเวลาเป็น 0 ตัวตั้งเวลานี้จะทำการถ่ายทอดข้อมูลบ่อยที่สุดที่มันสามารถทำได้ (ต่อเฟรมหนึ่งครั้ง) ซึ่งจะทำให้เรามีโอกาสอัปเดตการเคลื่อนที่ของแพดได้บ่อยครั้ง.
ก่อนที่จะตั้งค่าความเร็วของแพด เราต้องการให้แน่ใจว่าค่าของกล่อง Move Direction ถูกจำกัดในช่วงที่เหมาะสม โดยระมัดระวังไม่ให้สูงหรือต่ำเกินไป ไม่เช่นนั้นแพดจะเคลื่อนที่เร็วเกินไปในบางกรณี.
ภายใต้หมวด Logic ให้วางพฤติกรรม Minimum และ Maximum เชื่อมโยงพฤติกรรม Minimum ไปยังตัวตั้งเวลา และพฤติกรรม Maximum ไปยัง Minimum คุณควรมีบางสิ่งที่ดูเหมือนอย่างนี้:
ในคุณสมบัติพฤติกรรม Minimum ตั้งค่าค่าตัวแรกเป็นค่าผลลัพธ์ของพฤติกรรม Move Direction และค่าตัวที่สองเป็น 1.
พฤติกรรม Minimum นี้จะส่งค่าต่ำสุดที่มันได้รับดังนั้นหากค่าทิศทางการเคลื่อนที่สูงกว่า 1 มันจะส่งออก 1 ไม่เช่นนั้นมันจะส่งออกค่าทิศทางการเคลื่อนที่.
ในคุณสมบัติของพฤติกรรม Maximum ตั้งค่าค่าตัวแรกเป็นผลลัพธ์ของ Minimum และค่าตัวที่สองเป็น -1.
พฤติกรรม Maximum นี้จะส่งค่าที่สูงที่สุดที่มันได้รับ ดังนั้นหากค่าทิศทางการเคลื่อนที่ต่ำกว่า -1 มันจะส่งออก -1 ไม่เช่นนั้นมันจะส่งออกค่าของ Minimum (ซึ่งคือ 1 หรือค่าทิศทางการเคลื่อนที่ ซึ่งมีค่าต่ำกว่า).
ทั้งหมดนี้หมายความว่าค่าผลลัพธ์ของ Maximum เป็นค่าของ Move Direction ที่อยู่ระหว่าง -1 และ +1 ทำให้เราสามารถควบคุมความเร็วที่แพดสามารถย้ายได้!
ช่วงจาก -1 ถึง +1 ใช้งานได้ง่าย แต่จะช้าเกินไปหากเราใช้ค่าดังกล่าวโดยตรงเป็นความเร็วของแพด.
ภายใต้หมวด Logic อีกครั้งวางพฤติกรรม Multiply Values และเชื่อมโยงกับพฤติกรรม Maximum สำหรับค่าตัวแรกตั้งไว้เป็นค่าผลลัพธ์ของพฤติกรรม Maximum สำหรับค่าตัวที่สองเราสามารถตั้งค้าให้เป็นค่าที่ดี "ความเร็วสูงสุด".
ตอนนี้ตั้งค่าเป็น 20 หากคุณคิดว่าแพดเคลื่อนที่ช้าหรือเร็วเกินไปในภายหลัง คุณสามารถตั้งค่านี้ให้มีค่าต่ำกว่าหรือสูงกว่านี้ได้.
พฤติกรรม Multiple Values ตอนนี้ให้ช่วงความเร็วที่ดีสำหรับการทำงาน ตั้งแต่ -20 ถึง +20.
ตอนนี้เป็นเวลาที่ดีที่จะตั้งค่าความเร็วของแพด ภายใต้หมวดฟิสิกส์ให้เพิ่มพฤติกรรม Set Velocity และเชื่อมโยงกับพฤติกรรม Multiply Values ตั้งค่าฟิลด์ "x" เป็น 0 และฟิลด์ "y" เป็นผลลัพธ์ของพฤติกรรม Multiply Values.
ลองเล่นมันสิ! เมื่อคุณเล่นเกม แพดจะต้องเคลื่อนที่เมื่อคุณเคลื่อนที่จอยสติ๊กขึ้นและลง.
ตามที่คุณน่าจะสังเกตเห็นในระหว่างการทดสอบ ไม่มีอะไรหยุดแพดให้ไม่ออกจากหน้าจอ ในส่วนถัดไป เราจะเพิ่มขอบเขตเพื่อให้ทุกอย่างอยู่ในมุมมอง.
ส่วนที่ 3: ขอบเขตของเกม
ก่อนที่เราจะดำเนินการกันต่อ ให้เรามีวิสัยทัศน์และพิจารณาการออกแบบเกมที่ดี แพดของผู้เล่นจะไม่อยู่ในตำแหน่งกลางของหน้าจอ แต่จะอยู่ใกล้ขอบเนื่องจากเรากำลังประกอบเกมของเรา สิ่งนี้จะกลายเป็นปัญหาขณะที่เรามีองค์ประกอบ UI (เช่นจอยสติ๊ก) ที่จะทับซ้อนกับองค์ประกอบเกมของเรา (เช่นแพด).
แทนการใช้หน้าจอทั้งหมดเป็นพื้นที่เล่นได้ เราควรสร้างขอบเขตเข้าไปเพื่อไม่ให้แพดไม่ไปอยู่ด้านล่างจอยสติ๊กซึ่งทำให้มองไม่เห็น นั่นจะทำให้เราสามารถติดตามแพดของเราใกล้ที่ด้านล่างของพื้นที่เล่นได้ง่ายกว่า เราสามารถใช้การขอบนี้เป็นขอบเขตที่แข็งแกร่งเพื่อไม่ให้องค์ประกอบของเราหลุดออกไปจากสนามเล่น.
แตะปุ่มวัตถุพิเศษและสร้างวัตถุว่างใหม่ แตะวัตถุใหม่เพื่อเปิดคุณสมบัติของมัน.
ตั้งค่าโหมดฟิสิกของมันเป็นผนัง และถอนการเลือกการผ่านออก และทำให้มันมองเห็นได้ โดยการตั้งค่าสีให้เรามองเห็นมันได้ง่าย สีเทาเข้มทึบ (#1F1F1FFF) เหมาะสมดี ตั้งค่าความเสียดทานเป็น 0% และการเด้งเป็น 100%.
ตอนนี้ในแท็บการเปลี่ยนแปลงของผนังให้ตั้งค่าสเกล Y เป็น 200% และย้ายไปที่ด้านบนของพื้นที่หน้าจอ ขยายมันเพื่อให้พอดีกับความกว้างเต็มของพื้นที่หน้าจอ คุณยังสามารถเปิดโหมดติดตารางเพื่อช่วยให้การใส่พอดี.
ตอนนี้ให้ทำซ้ำผนังและเคลื่อนสำเนาไปยังด้านล่าง.
ทำซ้ำอีกครั้งและตั้งค่าขนาด X ให้เป็น 200% แทน จากนั้นขยายความสูงให้พอดีกับหน้าจอและวางไปด้านซ้ายของหน้าจอ.
และอีกครั้ง ทำซ้ำผนังแนวตั้งและย้ายไปยังด้านขวาของหน้าจอ คุณควรจะมีสนามเกมที่มีการปิดกั้นทั้งหมดแล้ว:
เมื่อคุณเล่นเกมตอนนี้ คุณอาจสังเกตได้เลยว่าคุณสามารถผ่านผนังไปได้เหมือนกับว่ายังไม่มีอยู่ นี่เกิดจากสาเหตุสองประการ; เราได้ตั้งค่าแพดให้อยู่ใน “ผ่านได้” และเรากำลังบังคับให้ความเร็วของแพดในทุกเฟรม สิ่งนี้เป็นสิ่งที่ดี เราเพียงแค่ต้องสร้างวิธีหยุดแพดไม่ให้เคลื่อนที่เข้าไปในผนัง.
สิ่งที่เราจะทำเพื่อให้เราตรวจสอบพฤติกรรมดังกล่าวคือการตรวจสอบตำแหน่งของผู้เล่นกับตำแหน่งของผนัง หากเป็นจริง ให้ผลักผู้เล่นกลับเข้าสู่สนามเล่น.
เพื่อทำให้สะดวกง่ายสำหรับเราในการดำเนินการนั้น ให้แตะผนังด้านบนและเปลี่ยนจุดยึด Y เป็น 0% จะช่วยให้ตำแหน่งของผนังถูกยึดไว้ที่ด้านใต้ของมันเอง คุณอาจต้องปลดล็อกฟิลด์จุดยึดโดยการแตะที่สัญลักษณ์ล็อก.
ในทำนองเดียวกันกับผนังที่ด้านล่าง ให้เปลี่ยนจุดยึด Y ของผนังล่างเป็น 100% ในครั้งนี้ เพื่อให้ช่วยให้ตำแหน่งของผนังส่วนล่างจะยึดไว้ที่ด้านบนสุดของมัน.
ตอนนี้เราพร้อมที่จะดำเนินการสร้างพฤติกรรมการตรวจสอบขอบของเราแล้ว แตะที่แพดและเปิดแก้ไขพฤติกรรม.
เริ่มต้นด้วยการวาง Get Bounding Box จากหมวด Logic มันจะถูกตั้งค่าให้ใช้แพดอยู่ตามค่าเริ่มต้น พฤติกรรมนี้จะให้ตำแหน่งด้านล่าง/ซ้ายและขนาดของแพด.
ถัดไปให้ดรอปพฤติกรรม Add Values จากหมวด Logic และเชื่อมต่อกับพฤติกรรม Get Bounding Box ในคุณสมบัติของ Add Values ตั้งค่าค่าตัวแรกเป็นผลลัพธ์ของ Get Bounding Box "y" และค่าตัวที่สองให้เป็นผลลัพธ์ "height".
ค่าผลลัพธ์ของการบวกจะเป็นตำแหน่งสูงสุดของแพด สำหรับการอ่านง่ายคุณอาจเปลี่ยนชื่อพฤติกรรมให้เป็นอะไรที่มีความหมาย เช่น "Add Values - Paddle Top" เพื่อให้เราสามารถเห็นสิ่งที่มันกำลังทำ.
ตอนนี้เราจะตรวจสอบว่าแพดเคลื่อนที่เข้าสู่ผนังด้านบนหรือล่างหรือไม่ ภายใต้หมวด Transform ให้ดรอปสองพฤติกรรม Get Position และเชื่อมต่อกับพฤติกรรม Add Values อย่างขนาน.
ตั้งค่าพฤติกรรม Get Position ตัวแรกให้ติดตามผนังด้านล่างและตั้งค่าพฤติกรรม Get Position ตัวที่สองให้ติดตามผนังด้านบน คุณยังสามารถเปลี่ยนชื่อพฤติกรรมเหล่านี้เพื่อให้อ่านง่ายขึ้น ตอนนี้คุณควรมีอะไรที่ดูเหมือนอย่างนี้:
สำหรับพฤติกรรม Get Position แต่ละอัน ให้เพิ่มและเชื่อมต่อพฤติกรรม Subtract Values จากหมวด Logic.
ในคุณสมบัติของ Subtract Values ที่เชื่อมต่อกับพฤติกรรม Get Position ของผนังด้านล่าง ตั้งค่าค่าตัวแรกเป็นค่าผลลัพธ์ "position_y" จาก Get Position (ด้านล่าง) และค่าตัวที่สองเป็นค่าผลลัพธ์จาก Get Bounding Box "y".
ตอนนี้ในคุณสมบัติของ Subtract Values อีกตัวที่เชื่อมต่อกับผนังด้านบน ตั้งค่าค่าตัวแรกเป็น "position_y" จาก Get Position (ด้านบน) และค่าตัวที่สองเป็นผลลัพธ์จาก Add Values - Player Top.
การหักลบเหล่านี้จะบอกเราว่าเราอยากจะ "ผลัก" แพดกลับเข้าไปในสนามเล่นมากแค่ไหน ตอนนี้เราเพียงแค่ต้องตรวจสอบว่าเราต้องทำหรือไม่.
ภายใต้หมวด Logic ให้ดรอปและเชื่อมต่อพฤติกรรม If สำหรับแต่ละสาขาพฤติกรรม.
สำหรับพฤติกรรม If ที่เชื่อมต่อกับสาขาผนังด้านล่างให้ตั้งค่าค่าตัวแรกเป็นผลลัพธ์ของพฤติกรรม Subtract Values ที่เชื่อมต่ออยู่ ตั้งค่าความสัมพันธ์เป็น > ("มากกว่า") และค่าตัวที่สองเป็น 0.
สำหรับพฤติกรรม If ที่เชื่อมต่อกับสาขาผนังด้านบนให้ตั้งค่าค่าตัวแรกเป็นผลลัพธ์จากพฤติกรรม Subtract Values ที่เชื่อมต่ออยู่ ตั้งค่าค่าให้ความสัมพันธ์เป็น < ("น้อยกว่า") และค่าตัวที่สองเป็น 0.
ทั้งสอง If คำสั่งนี้จะดำเนินการต่อถ้าแพดเกินแต่ละผนังที่เกี่ยวข้องอยู่.
ถ้าแพดเกินผนัง เราต้องหยุดการเคลื่อนที่แพดจากการเคลื่อนที่ไปอีกโดยการรีเซ็ตพฤติกรรมของแพดให้เป็น 0 และจากนั้นผลักคืนไปด้านในสนาม.
ภายใต้หมวดฟิสิกส์ให้วางและเชื่อมต่อพฤติกรรม Set Velocity สำหรับแต่ละสาขา ในทั้งคู่ตั้งค่าความเร็ว X/Y เป็น 0.
ตอนนี้เราสามารถดึงแพดกลับเข้าสู่การเล่นได้ ภายใต้หมวด Transform ให้วางพฤติกรรม Move By สำหรับแต่ละสาขา.
ในแต่ละ Move By ให้ทิ้งค่าการเลื่อน X เอาไว้ที่ 0 และตั้งค่าการเลื่อน Y ให้เป็นผลลัพธ์จาก Subtract Values ใน Branch ที่เกี่ยวข้อง จากนั้นตั้งระยะเวลาเป็น 0 วินาที (ทันที).
ทั้งส่วนนี้ในขณะที่ถูกดำเนินการจะตรวจสอบดูว่าแพดอยู่ในผนังอย่างไร ระยะห่างที่มันเข้าไปในผนัง และผลักมันออกไปถ้าจำเป็น ตอนนี้เราต้องเรียกห่วงโซ่พฤติกรรมนี้เมื่อใดก็ตามที่แพดเคลื่อนที่.
เพื่อความง่าย ในด้านที่สูงที่สุดของห่วงโซ่พฤติกรรมนี้ให้เพิ่มพฤติกรรม Bundle จากหมวด Custom และเชื่อมโยงมันไว้เหนือ Get Bounding Box คุณอาจตั้งชื่อว่าอะไรที่มีความหมาย เช่น "ตรวจสอบขอบ".
หมายเหตุ: พฤติกรรม "Behaviour Bundle" ไม่ได้ทำอะไรเอง และถูกใช้ที่นี่เพื่อทำเครื่องหมาย "จุดเริ่มต้น" ในการตรวจสอบว่าแพดอยู่นอกขอบเขต.
ถัดไปภายใต้หมวด Custom ให้วางพฤติกรรม Execute Behaviour ในคุณสมบัติของมันให้แตะที่ฟิลด์ "Select Behaviour" และเลือกพฤติกรรม "ตรวจสอบขอบ" ที่เราทำไว้ เมื่อเคลื่อนที่ต่อจาก Set Velocity จากห่วงโซ่การเคลื่อนที่แพดก่อนหน้านี้ให้เชื่อมต่อ Execute Behaviour เข้ากับพฤติกรรม Set Velocity ของแพด.
ตอนนี้ทุกครั้งที่แพดปรับความเร็วการเคลื่อนที่ Execute Behaviour จะ "กระโดด" ไปยังพฤติกรรมการตรวจสอบขอบของเรา ซึ่งจะตรวจสอบถ้าแพดเคลื่อนที่ออกจากขอบเขต!
ทดสอบมันออกและดูมันทำงาน!
ยังมีสิ่งหนึ่งที่ต้องทำก่อนที่เราจะดำเนินการต่อ ให้ย้ายแพดไปยังด้านซ้ายของสนาม.
ตอนนี้ที่เรามีพื้นที่เพียงพอให้สร้างลูกบอล!
ส่วนที่ 4: ทำลูกบอล
กลับไปในตัวแก้ไขฉาก สร้างวัตถุว่าง ตั้งค่าโหมดฟิสิกส์เป็นฟิสิกและถอนการเลือกการผ่าน เพื่อให้ลูกบอลสามารถเคลื่อนที่ได้และมีการชนจริงกับผนวก ไปที่สีให้เป็นสีขาว (#FFFFFFFF) สำหรับความง่าย คุณสามารถเปลี่ยนชื่อนี้เป็น "ลูกบอล".
ในแท็บการเปลี่ยนแปลง ตั้งค่าขนาดให้เป็น X=25% และ Y=25% และตั้งตำแหน่งเป็น X=50% และ Y=50%.
ถัดไปเปิดการแก้ไขพฤติกรรมของลูกบอล และให้มันเคลื่อนไหวกัน ภายใต้หมวด Custom ให้ดรอปพฤติกรรม Wait และตั้งให้เป็น 3 วินาที.
จากนั้นวางพฤติกรรม Random Number จากหมวด Logic และเชื่อมต่อกับพฤติกรรม Wait สำหรับค่าตัวแรกให้ตั้งเป็น -1.0 และค่าตัวที่สองให้เป็น 1.0. ต้องเป็นการรวม "0" เพราะจะสุ่มเลือกหมายเลขระหว่าง -1.0 ถึง 1.0 รวมถึงจุดทศนิยม หากไม่เช่นนั้นจะเลือกเพียงเลขจำนวนเต็มเท่านั้น จะใช้หมายเลขสุ่มนี้เป็น "ทิศทางการโยน" เมื่อลูกบอลเริ่มต้น.
ถัดไปให้หยิบและเชื่อมต่อการใช้พลังจากหมวดฟิสิกส์ ตั้งค่าพลัง X=-1 และทำให้พลัง Y เป็นผลจากพฤติกรรม Random Number สิ่งนี้จะทำให้ลูกบอลเคลื่อนที่ไปในทิศทางแต่ 1 นิวตันจะไม่ใช่พลังงานมาก ดังนั้นเราควรเปลี่ยนตัวคูณเช่นกัน ตั้งค่าให้เป็น 150 และทดสอบเกมเพื่อดูว่าช้าหรือเร็วจนเกินไปหรือไม่ ถ้าใช่คุณสามารถเปลี่ยนค่าตัวคูณนี้ตามที่คุณต้องการ ลูกบอลควรเริ่มเคลื่อนที่หลังจาก 3 วินาทีเมื่อเล่น นั่นเหมือนถูกเสิร์ฟ.
เมื่อทดสอบลูกบอลควรเด้งไปรอบ ๆ ตามผนัง แต่ผ่านแพดไป นั่นเป็นเรื่องปกติ เพราะเรายังไม่ได้สร้างพฤติกรรมการชนของแพดด้วยลูกบอล คุณอาจสังเกตเห็นว่าลูกบอลการหมุนได้บางขณะ ซึ่งเราไม่ต้องการทำ เรามาแก้ไขเรื่องนี้.
กลับไปยังพฤติกรรมของบอล วางไว้ที่ไหนสักแห่งเป็นพฤติกรรม Lock Rotation ใต้หมวด Transform และทดสอบใหม่ ตอนนี้ลูกบอลจะไม่หมุนออกจากการควบคุมอีกต่อไป.
ก่อนที่เราจะเริ่มเพิ่มพฤติกรรมสำหรับการชนกับแพด กลับไปยังตัวแก้ไขฉาก ให้แตะที่แพด และในคุณสมบัติแพดให้ไปที่แท็บแท็ก ในช่องข้อความให้พิมพ์ "แพด" และกดปุ่ม + เพื่อเพิ่มแท็กเข้ากับแพด.
ตอนนี้กลับไปที่ตัวแก้ไขพฤติกรรมของบอล ภายใต้หมวดวัตถุให้ดรอปพฤติกรรม Collided ที่ใดก็ได้ ในคุณสมบัติของพฤติกรรมนั้นให้แตะที่แท็บแท็กและเลือกแท็ก Paddle ที่เราสร้างขึ้น ตอนนี้เมื่อใดก็ตามที่ลูกบอลชนกับวัตถุใด ๆ ที่มีแท็ก "Paddle" เหตุการณ์นี้จะถูกดำเนินการ.
สิ่งที่เราต้องการทำคือการปรับเปลี่ยนความเร็วของลูกบอลในทิศทาง X ของมัน นั่นคือถ้าลูกบอลเคลื่อนที่ไปทางซ้ายมันจะเริ่มเคลื่อนที่ไปทางขวา และในทางกลับกัน เรายังต้องการให้ลูกบอลเคลื่อนที่เร็วขึ้นเล็กน้อยกว่าก่อนหน้านี้ ดังนั้นในแต่ละรอบลูกบอลจะค่อย ๆ เร็วขึ้นไป.
เชื่อมต่อไปยังพฤติกรรม Collided ให้ดรอปพฤติกรรม Get Velocity จากหมวดฟิสิกส์ หลังจากนั้นให้เชื่อมต่อพฤติกรรม Multiply Values จากหมวด Logic ตั้งค่าค่าตัวแรกเป็นผลลัพธ์ "velocity_x" จาก Get Velocity สำหรับค่าตัวที่สองให้ตั้งค่าให้เป็น -1.03 ผลลัพธ์ของค่า multiply นี้จะเป็นความเร็ว X เชิงลบของลูกบอล และยังมีการเพิ่มความเร็วประมาณ 3% อีกด้วย เรามาใช้การเปลี่ยนแปลงนี้ในลำดับถัดไป.
เชื่อมต่อกับพฤติกรรม Multiply Values ให้ดรอปพฤติกรรม Set Velocity จากหมวดฟิสิกส์ ตั้งค่าความเร็ว X เป็นผลลัพธ์ของ Multiply Values และปล่อยให้ความเร็ว Y เป็นความเร็วที่มีอยู่.
ตอนนี้เมื่อคุณเล่น ลูกบอลควรจะเด้งไปมา ชนกับแพดและกลับทิศทางพร้อมกับความเร็วที่เพิ่มขึ้นเล็กน้อย.
ทุกอย่างเริ่มมีโครงสร้างแล้ว! ลูกบอลและแพดเคลื่อนที่ได้ดี แต่การโยนของบอลไม่ได้เปลี่ยนแปลง เมื่อบอลชนแพดมันควรเปลี่ยนทิศทางด้วย; หากลูกบอลชนใกล้ด้านบนของแพด มันก็ควรโยนขึ้น และหากลูกบอลชนใกล้ด้านล่างของแพด มันก็ควรโยนลง นี่จะเพิ่มเลเยอร์ของความซับซ้อน เช่นเดียวกับทักษะเนื่องจากผู้เล่นมีการควบคุมที่ลูกบอลจะไปไหม.
เพื่อให้รู้ว่าควรโยนลูกบอลไปทิศทางไหน เราจะต้องได้รับความแตกต่างในตำแหน่งระหว่างลูกบอลและแพด ภายใต้หมวด Transform ให้ดรอปพฤติกรรม Get Position ทั้งสองตัวและเชื่อมต่อพวกเขาเป็นลำดับภายใต้ Set Velocity.
พฤติกรรม Get Position ตัวแรกจะติดตามลูกบอลตามค่าเริ่มต้น เปลี่ยน Get Position ตัวที่สองให้เป็นค่าผลลัพธ์ "ObjectB_ID" จากเหตุการณ์ Collided.
หมายเหตุ:"ObjectB" ในที่นี้จะเป็นแพดที่ชนกันเนื่องจากมันเป็นวัตถุที่สองที่เกี่ยวข้องซึ่งเกี่ยวข้องในเหตุการณ์การชน ขณะที่วัตถุแรก ("ObjectA") จะเป็นลูกบอล.
ดรอปและเชื่อมต่อพฤติกรรม Subtract Values จากหมวด Logic ตั้งค่าค่าตัวแรกเป็นผลลัพธ์ "position_y" ของ Get Position ที่ติดตามบอล ตั้งค่าค่าตัวที่สองเป็นผลลัพธ์ "position_y" ของ Get Position ที่ติดตามแพด.
ถัดไปให้ดรอปและเชื่อมต่อพฤติกรรม Apply Force จากหมวดฟิสิกส์ ตั้งค่าค่าพลัง X เป็น 0 และพลัง Y เป็นผลลัพธ์ของ Subtract Values ค่าตำแหน่งเพียงอย่างเดียวดังนั้นเราจึงต้องเพิ่มค่าตัวคูณให้ด้วย โปรดทดสอบด้วยตัวคูณ 50 และดูว่าเป็นอย่างไรในเกม.
ขณะที่ทดสอบลูกบอลควรจะเปลี่ยนแนวโน้มขึ้นหรือลงตามที่คุณตีลูกบอลบนแพด แทนที่จะโยนดยาวกระจัดกระจายไปรอบ ๆ หากลูกบอลโยนไปในทิศทางที่ผิดลองสลับค่าที่ Subtract Values นั่นจะช่วยแก้ปัญหาได้.
เรากำลังใกล้จะจัดการการเคลื่อนที่ของลูกบอลโดยสมบูรณ์แล้ว! แต่ยังมีปัญหาเล็กน้อย ลูกบอลไม่มีขีดจำกัดความเร็วที่จะเคลื่อนไหว! ในความเป็นจริง หลังจากเล่นไปสักครู่โดยไม่ต้องรีเซ็ต ลูกบอลสามารถเคลื่อนที่เร็วมากจนอาจผ่านวัตถุต่าง ๆ เราควรจัดทำขีดจำกัดความเร็วของลูกบอลเพื่อไม่ให้มันเข้าถึงความเร็วที่สูงมากนี้.
หลังจาก Apply Force ให้วางและเชื่อมต่อพฤติกรรม Get Velocity จากหมวดฟิสิกส์เพื่อให้ได้ความเร็วใหม่ของลูกบอล ภายใต้ที่เหลือให้ดรอปและเชื่อมต่อพฤติกรรม Maximum และ Minimum ไปยังลำดับกันจากหมวด Logic.
ในคุณสมบัติ Maximum ตั้งค่าค่าตัวแรกเป็นผลจาก "velocity_x" จาก Get Velocity จากนั้นตั้งค่าตัวที่สองเป็น -25 ซึ่งหมายถึงค่าสูงสุด.
ในคุณสมบัติ Minimum ตั้งค่าค่าตัวแรกเป็นผลที่ได้จาก Maximum และตั้งค่าตัวที่สองเป็น 25. สิ่งนี้จะทำให้ได้ผลลัพธ์ที่ดีที่สุดซึ่งค่าที่สูงกว่าค่าใดค่าหนึ่ง.
ใน Minimum ของใหม่ให้ตั้งค่าค่าตัวแรกเป็นผลจาก Minimum และค่าตัวที่สองเป็น 10. สิ่งนี้จะทำให้เกิดระดับขั้นต่ำในย่าน -10 ถึง 10 อย่างไรก็ไม่ต้องการความเร็วลูกบอลที่สูงมาก.
ตอนนี้ที่เรามีค่าขีดจำกัดความเร็วสำหรับลูกบอล ให้เราใช้มันแล้ว ให้ดรอปและเชื่อมต่อพฤติกรรม Set Velocity จากหมวดฟิสิกส์ ในคุณสมบัติของมันให้ตั้งค่าความเร็ว X ให้เป็นผลของ Minimum ขีดจำกัดความเร็ว X และตั้งค่าความเร็ว Y ให้เป็นผลของ Minimum ขีดจำกัดความเร็ว Y.
ตอนนี้ไม่ว่านานแค่ไหนคะแนนการแข่งขันลูกบอลจะไม่สามารถไปถึงความเร็วที่สูงนี้ให้นอกจากนี้ ความเร็ว Y ก็ยังถูกจำกัดดังนั้นลูกบอลไม่เคลื่อนไหวจนเกินไป.
ส่วนที่ 5: ปัญญาประดิษฐ์แพด
แม้ว่าการทำซ้ำแพดและสร้างแพดที่เล่นได้อยู่แล้วจะเป็นเรื่องที่ยอมรับได้ แต่จะไม่ดีกว่าหรือที่จะมีตัวเลือกต่อสู้กับ AI แทนที่จะเป็น 2 ผู้เล่น? แน่นอนว่ามันจะ! ในส่วนนี้เราจะมาดูการให้ปัญญาประดิษฐ์ให้กับแพดและให้ผู้ใช้ตัวเลือกในการเล่นโหมด 2 ผู้เล่นหรือเล่นกับ AI.
ด้วยระบบที่เราตั้งค่าให้กับการเคลื่อนที่ของผู้เล่น - นั่นคือการเปลี่ยนแปลงค่าตรง Move Direction - การนำ AI ไปใช้จึงทำได้ง่าย เพียงแค่ไม่ใช้จอยสติ๊ก แพดจะเปลี่ยน Move Direction ขึ้นอยู่กับตำแหน่งบอลว่ามันอยู่ด้านบนหรือล่าง.
เราก็จะเพิ่มความเปลี่ยนแปลงให้กับ Move Direction ด้วย หรือพูดอีกอย่างคือความสุ่ม โดยการทำแบบนี้ เราจะให้ลักษณะของความเป็นมนุษย์แก่ AI อย่างหนึ่ง AI จะไม่รู้สึกเหมือนเครื่องจักร และไม่เล่นเกมอย่างสมบูรณ์แบบ.
ที่เราจะกำหนดให้ AI เป็น:
- AI จะเคลื่อนที่เฉพาะเมื่อบอลกำลังมาทางพวกเขา.
- Move Direction จะเป็นผลลัพธ์ระหว่างตำแหน่ง Y (แนวตั้ง) ของลูกบอลและแพดบวกความเปลี่ยนแปลงเล็กน้อย.
- เมื่อใดก็ตามที่ลูกบอลชนกับสิ่งใด เข้าการแพด ค่าตัวแปรความเปลี่ยนแปลงของ AI จะเปลี่ยนไป.
- ความเปลี่ยนแปลงจะพึ่งพาความเร็วของบอล; บอลที่เคลื่อนไปเร็วขึ้น และมีค่าซับซ้อนโดยมาก AI จะต้องประเมินไม่ตรงกัน.
ดูเหมือนว่าง่ายพอ มาทำกันเถอะ.
แตะที่แพดแล้วเข้าไปที่การแก้ไขพฤติกรรม หาสถานที่ว่าง ๆ และดรอปพฤติกรรม Timer ใหม่จากหมวด Custom ตั้งเวลาเป็น 0 วินาที เพื่อความเข้าใจง่าย เปลี่ยนชื่อให้เป็น "AI Think".
หมายเหตุ: หากคุณได้รับข้อความ ณ ที่นี้หรือในอนาคตเกี่ยวกับการมีตัวตั้งเวลาเกินที่เวลา 0 วินาที คุณสามารถละเว้นมันไปได้อย่างปลอดภัยจนกว่าจะมีน้อย.
เริ่มต้น เราต้องตั้งค่าการเคลื่อนที่ของ Move Direction เป็น 0 วิธีนี้ทำให้แพดหยุดเคลื่อนเมื่อเราไม่ต้องการให้มันเคลื่อนที่เลย แตะพฤติกรรม Move Direction ที่เราทำในส่วนที่ 2 และแตะที่ปุ่ม Change Input Field เพื่อสร้างพฤติกรรม Set Input Field ใหม่ เชื่อมต่อพฤติกรรม Set Input Field ไปกับ AI Think Timer ตั้งค่าค่า New Value ให้เป็น 0.
ภายใต้หมวด Transform ให้ดรอปพฤติกรรม Get Position สองตัวและเชื่อมต่อกันจากการดำเนินการที่สองของ AI Think Timer หนึ่งในนั้นให้ติดตามบอลและปล่อยอีกตัวติดตามแพด สำหรับการอ่านง่าย คุณสามารถเปลี่ยนชื่อพฤติกรรมเหล่านี้ได้ดีขึ้น เช่นนี้:
วิธีนี้ค่าทิศทาง Move Direction ที่ตั้งค่าก่อนจะไปในที่ต่าง ๆ ที่อื่น.
ต่อไปให้ดรอปและเชื่อมต่อพฤติกรรม Get Velocity จากหมวดฟิสิกส์และให้ติดตามบอล ในพฤติกรรมทั้งสามนี้เรามีข้อมูลที่จำเป็นทั้งหมดเพื่อให้ตรวจสอบว่าลูกบอลกำลังมาในทิศทางแพดหรือไม่.
ดรอปและเชื่อมต่อพฤติกรรม If จากหมวด Logic สร้างค่าตัวแรกเป็น "position_x" จาก Get Position สำหรับแพด ตั้งค่าความสัมพันธ์ใน If เป็น “Is Less Than” (<) และค่าตัวที่สองให้เป็น "position_x" จาก Get Position สำหรับบอล.
ถ้าสถานะนี้จริง นั่นหมายถึงว่าแพดอยู่ข้างซ้ายของลูกบอล ในอีกนัยหนึ่งลูกบอลอยู่ทางด้านขวาของแพด.
เรายังต้องมีสาขาสำหรับเมื่อลูกบอลอยู่ทางด้านขวาของแพดด้วยอีกด้วย ดรอปและเชื่อมต่อพฤติกรรม If อีกตัวที่ด้านขวาของพฤติกรรม If ตัวแรกจะเปลี่ยนให้เป็นพฤติกรรม Else If และจะดำเนินการหากพฤติกรรม If ตัวแรกไม่เป็นจริง คุณไม่จำเป็นต้องเปลี่ยนคุณสมบัติใดๆ ของมัน.
ตอนนี้เรายังสามารถตรวจสอบว่าลูกบอลเคลื่อนที่ไปทางแพดหรือไม่.
ดรอปพฤติกรรม If อีกตัวและเชื่อมต่อไปยังพฤติกรรม If แรก ตั้งค่าค่าตัวแรกเป็นผล "velocity_x" จาก Get Velocity สำหรับบอล และตั้งค่าความสัมพันธ์เป็น "น้อยกว่า" (<) และค่าตัวที่สองเป็น 0 ถ้าพฤติกรรม If นี้จริงหมายความว่าลูกบอลเคลื่อนที่ไปทางซ้าย ซึ่งนั่นคือสิ่งที่เราต้องการเพราะพฤติกรรม If ที่แล้วจะเกิดขึ้นเมื่อบอลอยู่ทางด้านขวาของแพด ดังนั้นบอลจึงต้องกำลังมาทางแพด.
ตอนนี้เราต้องประพฤติแบบเดียวกันในส่วน"Else If" แตะพฤติกรรม If ใหม่และคัดลอกมัน ติดตั้งมันเข้าสาขา Else If ตั้งค่าความสัมพันธ์เป็น "มากกว่า" (>) กล่าวคือ หากลูกบอลอยู่ทางซ้ายของแพด พฤติกรรม If นี้จะทำงานและตรวจสอบว่าบอลกำลังเคลื่อนที่ไปทางขวา หากเป็นจริง ลูกบอลจึงมากำลังมาทางแพด.
ถ้าการดำเนินงานไปสุดของคำสั่ง If นี้ AI อนุญาตให้เคลื่อนที่! ตอนนี้เราต้องปรับ Move Direction ขึ้นอยู่กับว่าลูกบอลอยู่ในแนวตั้งเท่าใด.
ภายใต้หมวด Logic ให้ดรอปพฤติกรรม Subtract Values เชื่อมต่อไปยัง If ของพฤติกรรมต่าง ๆ สร้างค่าตัวแรกเป็น "position_y" จากพฤติกรรม Get Position สำหรับบอล, เมื่อค่าตัวที่สองเป็น "position_y" จากพฤติกรรม Get Position สำหรับแพด.
เมื่อท่านใช้ทิศทางนี้ คุณจะเบี่ยงเบนระหว่างแพดและบอลในแกนแนวตั้ง และแพดจะพยายามเคลื่อนที่ได้เร็วขึ้นหากบอลอยู่ห่างจากแพดมาก ค่าที่นี้เพียงเล็กน้อย และลงทะเบียน Move Direction ของแพด!
คลิกที่ Move Direction และสร้างพฤติกรรม Set Input Field โดยการแตะปุ่ม Change Input Field เชื่อมต่อกับ Subtract Values และตั้งค่าคุณสมบัติ New Value ให้เป็นผลจากพฤติกรรม Subtract Values.
ทดสอบมัน และแพดควรมีชีวิตชีวาทำงานอย่างอิสระเลย!
คุณอาจสังเกตเห็นของ AI เล่นอย่างดี มีไม่ค่อยแบทแพ็ตมาก โดยแก้ไขและปรับตัว AI เราต้องเพิ่มความเปลี่ยนแปลงลงไป; การให้ความสุ่มต้นของผู้เล่น AI จะแข่งขันในแทนที่ Avatar - ทั้งนี้เพราะเมื่อเกิดการพุ่งมาจริง ๆ AI จะเคลื่อนที่ด้วยความไม่แน่นอน.
กลับไปที่แพด. ดรอปพฤติกรรม Box Container จากหมวด Custom และตั้งชื่อว่า "Entropy" สำหรับการอ่านที่ดี ตั้งค่าให้เป็นค่าดีฟอลต์เป็น 0 จากนั้นให้ดรอปพฤติกรรม Add Values จากหมวด Logic.
ตัดการเชื่อมต่อ Subtract Values จาก Set Input Field ที่เราเพิ่งทำไว้และเชื่อมต่อ Add ระหว่างมัน ในคุณสมบัติ Add Values ให้นำค่าตัวแรกไปที่ส่วน Subtract Values ขณะที่ค่าตัวที่สองเป็นค่าที่ของ Entropy.
ในคุณสมบัติ Set Input Field ให=เปลี่ยนค่าของคุณจากผลของ Subtract Value ให้กลายเป็นผลของ Add Values.
ตอนนี้ Move Direction ของแพดจะเพิ่มค่าคอนเทนเนอร์ Entropy ดังนั้นทั้งหมดที่เราต้องทำคือเก็บค่าของที่ Entropy และค่อยๆจะเพิ่มให้กับ Move Direction ทำให้มันไม่ทำให้แพดมีความไม่ถูกต้อง.
ในตอนนี้ทำให้แพดมี Spatial Logic ในกรณีที่บอลทำการชนกับอะไรเท่าไหร่ และกำหนดคุม Entropy ของ AI ด้วยความเร็วให้มากขึ้น แพดจะมีเช่นเคยถือว่าผลลัพธ์.
หา Spot ว่าง ๆ และดรอปพฤติกรรม Collided จากหมวด Objects สำหรับวัตถุตัวแรกจะเลือกลูกบอล ติดแล้วไม่เปลี่ยน object ตัวที่สอง ผลลัพธ์ทั้งสิ้นจะเหมือนกัน.
ภาพรวมสั้นๆ จำกัดเวลาของลูกบอลก็จะเหลือค่าต่ำไปด้วย หลังจากไปได้ทุกที่จะมีปัญหาจิตใจว่าจะจัดการอย่างไรในครั้งต่อไปได้.
ให้จัดตั้งพื้นฐาน của ความคิดใกล้เคียง Spirit Pool ติดตั้งเข้าบนความบนไรเมื่อขึ้นขอบ โดนว่าสิ่งอาจเกิดได้ในคะแนนทดแทนด้วย.
ป.ล. วางอีกครั้งเกี่ยวกับการพัวพันของบอลที่ระหว่างการเคลื่อนไหวและย้ายเข้าบนอื่นๆ ไม่น่าเสียสละความถี่ เมื่อลองทดสอบที่ใช้องค์ประกอบที่ใช้ได้เราจะแจกองหมายเลข จัดการไม่เป็นที่ดี ในเวลาไม่พอ.
ใช้ได้ทั้งแฝดน้อยของลูกบอลนั้นได้ถ้าม้ามีระดับสูง หลังจากเจ้ามีอยู่บ่อยๆ ทุกๆครั้ง.
จัด ให้รีเซ็ต ระบบคาถา ได้บริหารความจำแนก และ โจมตีรวมการแจ้งให้พวกบอกแล้ว คาดการณ์ทั้งหมด.
ส่วนที่ 6: แพดที่สองและโหมดการเล่นได้
ในส่วนนี้เราจะตั้งค่า ...

