‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเพิ่มองค์ประกอบใหม่ให้กับผู้เล่น BP ของเรา นั่นคือการจัดการด้านฟิสิกส์
‫และเรากำลังจะเรียนรู้ว่าเราจะรับตัวชี้ไปยังองค์ประกอบแกร็บเบอร์ได้อย่างไร
‫เราจะดูด้วยว่าเราจะป้องกันตัวเองจากการชนเครื่องยนต์โดยไม่ได้ตั้งใจได้อย่างไร
‫มาดูวิธีการกันเลย
‫ในการที่จะจับวัตถุนั้น เราต้องโต้ตอบกับระบบฟิสิกส์
‫และจริงๆ แล้วมีองค์ประกอบที่เราสามารถใช้ได้เรียกว่า ที่จับทางฟิสิกส์ ซึ่งช่วยให้เราสามารถจับวัตถุทางกายภาพและบอกพวกเขาว่าเราต้องการอยู่ที่ไหนในโลก
‫แต่ทำในลักษณะที่ยอมรับข้อจำกัดทางกายภาพ ดังนั้นมันจึงไม่ ทะลุผ่านกำแพง
‫และดูเหมือนว่าวัตถุจะอยู่บนสปริงมากกว่าที่จะปฏิบัติตามจุดที่เราบอกให้มันไปอย่างเข้มงวด
‫เราจะใช้ส่วนประกอบที่จับทางฟิสิกส์นี้
‫เรากำลังจะไปและเพิ่มลงในผู้เล่นของเรา BP พร้อมกับตัวจับ
‫ไปที่ปุ่มเพิ่มภายใต้บานหน้าต่างส่วนประกอบและมองหาที่จับฟิสิกส์และเพิ่มเข้าไป
‫และคุณจะเห็นได้ว่ามันเป็นองค์ประกอบของนักแสดง ไม่ใช่องค์ประกอบของฉาก เพราะมันลงไปที่ส่วนล่างดังนั้นจึงไม่มีการเปลี่ยนแปลงทางกายภาพของมันเอง
‫สิ่งที่เราทำกับที่จับทางฟิสิกส์คือเราบอกให้วัตถุจับแล้วบอกว่าเราต้องการให้มันวางวัตถุที่เราคว้าไปไว้ที่ไหน
‫หากคุณไปที่เอกสารประกอบ คุณจะเห็นสิ่งนี้ในฟังก์ชันที่พร้อมใช้งาน
‫หากคุณเลื่อนลงไปที่ส่วนฟังก์ชัน คุณจะเห็นว่ามีส่วนประกอบการปลดล็อกและส่วนประกอบคว้าที่ฟังก์ชันตำแหน่ง
‫นอกจากนี้ยังมีที่ตั้งเป้าหมายและการหมุนที่ตั้งไว้
‫นี่คือจุดที่มันต้องการลองวางวัตถุ แต่เห็นได้ชัดว่ามันจะเคารพข้อจำกัดทางกายภาพในการทำเช่นนั้น
‫และมันจะทำได้อย่างราบรื่นราวกับว่ามันอยู่บนสปริง
‫ตอนนี้ เราจะยังไม่ใช้ฟังก์ชันเหล่านี้ แต่เราจำเป็นต้องหาวิธีที่จะยึดส่วนประกอบนี้ไว้ในส่วนประกอบแกร็บเบอร์ของเรา
‫แล้วเราจะทำอย่างนั้นได้อย่างไร?
‫เอาล่ะ ไปคว้า CP ของเราแล้วลองดูในการเริ่มเล่นและพยายามคว้ามันไว้
‫ขณะนี้มีฟังก์ชันสำหรับนักแสดงที่ช่วยให้เราค้นหาส่วนประกอบตามประเภทของมันได้
‫แต่ประเภทของที่จับทางกายภาพคืออะไร?
‫มันเป็นองค์ประกอบการจัดการฟิสิกส์ของคุณ
‫เพื่อให้ได้ประเภทนี้ เราจำเป็นต้องใช้การรวม และคุณสามารถเห็นการรวมในเอกสารประกอบคือ ส่วนประกอบการจัดการฟิสิกส์ไปข้างหน้าของเครื่องมือฟิสิกส์
‫มาคัดลอกที่ไปที่คว้า CP ของเราแล้วเพิ่มเข้าไปใต้เพิ่มตัวช่วยดีบักการวาด
‫จากนั้นสิ่งที่เราจะทำคือเรากำลังจะได้รับ ONA เพื่อรับพอยน์เตอร์ที่เราเป็นเจ้าของ
‫จากนั้นทำลูกศรและค้นหาส่วนประกอบตามคลาส
‫ตอนนี้ ฟังก์ชันนี้เป็นฟังก์ชันชนิดพิเศษที่เรียกว่าฟังก์ชันเทมเพลตใน C++ ซึ่งหมายความว่าคุณสามารถส่งผ่านพารามิเตอร์บางตัวที่ได้รับการประเมินจริง
‫ๆ เมื่อคุณคอมไพล์ได้
‫และวิธีที่คุณทำเช่นนี้คือการใช้วงเล็บมุมแบบนี้
‫ดังนั้นคุณใช้วงเล็บมุมหลังฟังก์ชัน และกำหนดประเภทที่คุณต้องการให้หา
‫ซึ่งในกรณีของเราคือองค์ประกอบที่คุณจัดการตามหลักฟิสิกส์
‫แล้วคุณปิดวงเล็บมุม
‫แต่เนื่องจากเป็นฟังก์ชัน คุณจึงต้องเรียกใช้โดยใช้วงเล็บปกติด้วย
‫แล้วคุณใส่วงเล็บชุดที่สองต่อจากนี้
‫ดังนั้นคุณจะเห็นว่าอาร์กิวเมนต์เวลาคอมไพล์เหล่านี้ถูกส่งผ่านโดยใช้วงเล็บมุม จากนั้นอาร์กิวเมนต์รันไทม์จะถูกส่งผ่านโดยใช้วงเล็บ
‫เช่นเดียวกับฟังก์ชันปกติ ค่านี้จะมีค่าส่งคืน และในกรณีนี้ ค่าที่ส่งคืนจะเป็นประเภทใดก็ตามที่เราส่งผ่านมาที่นี่
‫แต่ในฐานะพอยน์เตอร์ เราสามารถเอาพอยน์เตอร์องค์ประกอบที่จัดการทางฟิสิกส์ และสร้างตัวแปรสำหรับสิ่งที่เราจะเรียกตัวจัดการฟิสิกส์
‫และตั้งค่าให้เท่ากับสิ่งนี้ ให้เจ้าของค้นหาส่วนประกอบตามคลาส
‫ตอนนี้ ให้จำเครื่องหมายอัฒภาคที่ท้ายบรรทัดนี้ และนั่นคือทุกอย่างที่จำเป็น เพื่อให้เราได้รับองค์ประกอบอื่นในนักแสดงคนเดียวกันของเรา
‫จำไว้ว่าฉันได้บอกคุณไปแล้วว่าพอยน์เตอร์อาจเป็นอันตรายได้ เพราะบางครั้งอาจเป็นโมฆะและอาจนำไปสู่การหยุดทำงาน
‫ลองนึกภาพว่าเราลืมใส่ส่วนประกอบที่จับฟิสิกส์กับนักแสดงของเราหรือเราใส่ตัวจับสำหรับนักแสดงหน้าใหม่และเรายังไม่ได้เชื่อมต่อกับส่วนประกอบที่จับฟิสิกส์
‫หากเป็นกรณีนี้ ตัวชี้การจัดการฟิสิกส์จะเป็นตัวชี้ว่าง
‫และถ้าเราพยายามใช้ตัวดำเนินการลูกศรหรือตัวดำเนินการอ้างอิงบนตัวชี้นั้น เครื่องยนต์ของเราจะหยุดทำงาน
‫และบางครั้งก็ยากที่จะดูว่าการชนนั้นเป็นอย่างไร
‫ดังนั้นฉันจะไปข้างหน้าและทำให้การขัดข้องนี้แสดงให้คุณเห็น และคุณอาจจะจำได้ถ้ามันเกิดขึ้นกับคุณในอนาคต
‫ฉันจะกำหนดตัวชี้การจัดการฟิสิกส์ใหม่ให้เท่ากับตัวชี้ว่าง .
‫คีย์เวิร์ดพิเศษ
‫เป็นโมฆะทั้งหมด
‫Peter นั่นคือวิธีที่คุณสะกดตัวชี้ค่าว่างใน C ++
‫จากนั้นคุณใส่เครื่องหมายอัฒภาคต่อท้าย แล้วสิ่งที่เราจะทำคือเราจะทำฟิสิกส์
‫จัดการกับลูกศร ได้ชื่ออย่างนั้น
‫และถ้าเราดำเนินการต่อและคอมไพล์โดยใช้ live coding และเมื่อคอมไพล์เสร็จแล้ว เราจะดำเนินการต่อไปเพื่อให้แน่ใจว่า
‫อย่างแรกเลย ว่าเราบันทึกทุกอย่างที่เราได้มาที่นี่ในการเล่นซ้ำ เพราะผมเกี่ยวกับ
‫ให้เครื่องพังและถ้าผมไปกดเล่นนี่เป็นผลที่เราเจอรถชน
‫ผู้สื่อข่าว และคุณอาจถูกล่อลวงให้คิดว่าเมื่อคุณเห็นสิ่งนี้ว่ามีบางอย่างผิดปกติกับสิ่งที่ไม่จริง
‫แต่จริงๆ แล้วรหัสของคุณมีความผิดที่นี่
‫คุณจะเห็นว่าในรายงานข้อขัดข้องนี้ บรรทัดแรกบอกว่าปัญหามาจากคุณ คว้าเครื่องหมายทวิภาค
‫ทวิภาค เริ่มเล่น
‫และมันให้หมายเลขบรรทัดกับเราด้วย ซึ่งก็คือบรรทัดที่ 28
‫คุณจะเห็นได้ว่า ณ จุดนี้ในบรรทัดที่ 28 เมื่อเราอ้างอิงตัวชี้นั้น เพื่อเรียกใช้ฟังก์ชันบนตัวชี้นั้น
‫แท้จริงแล้วเราได้ทำข้อผิดพลาดร้ายแรงในการไม่ตรวจสอบก่อนว่าตัวชี้นั้นเป็นโมฆะหรือไม่
‫นั่นคือสิ่งที่เราต้องทำ
‫และเราทำสิ่งนั้นด้วยคำสั่ง if
‫โดยพื้นฐานแล้วเราบอกว่าถ้าตัวจัดการฟิสิกส์ไม่เท่ากับตัวชี้ null จากนั้นเราสามารถไปข้างหน้าและเรียกสิ่งต่าง ๆ บนที่จับฟิสิกส์นั้นเพื่อให้เราสามารถใส่ที่จับทางกายภาพรับชื่อภายในคำสั่ง
‫if และนั่นปกป้องเราเพราะรหัสนั้น D นั้น รหัสอ้างอิงจะไม่ถูกดำเนินการในกรณีที่เรามีตัวชี้ null
‫ดังนั้นฉันจะไปข้างหน้าและลบบรรทัดที่ 27 ตอนนี้ที่เรากำลังตั้งค่าตัวชี้เป็นโมฆะ
‫และฉันจะขอท้าให้คุณพิมพ์ชื่อส่วนประกอบสำหรับตัวคุณเอง
‫ดังนั้นให้พิมพ์เฉพาะในกรณีที่เรามีส่วนประกอบจริง โดยพื้นฐานแล้วเราไม่มีตัวชี้ null และใช้ตัวอื่นเพื่อเตือนหากเราไม่สามารถจัดการองค์ประกอบนั้นและลองลบส่วนประกอบเพื่อตรวจสอบ
‫หยุดวิดีโอชั่วคราวและมี ที่ผ่านมา.
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫เราจะสร้างข้อความบันทึกใหม่ของคุณที่นี่ และเราจะบอกว่ามีตัวจัดการฟิสิกส์โคลอน เปอร์เซ็นต์ sx และเราได้ชื่อแฮนเดิลฟิสิกส์นี้
‫ซึ่งผมจะตัดและวางเป็นอาร์กิวเมนต์ที่สองหรือ อาร์กิวเมนต์ที่สี่ลงในบันทึก
‫U
‫และฉันจะติดดาวเพราะมันเป็นสตริง
‫ตอนนี้ ให้เพิ่มคำสั่ง else ภายใต้คำสั่ง if ของเรา
‫และในนี้เราจะใส่บันทึก U อีกอัน ซึ่งจะเป็นคราวนี้แทนที่จะเป็นจอแสดงผล
‫เราจะใส่ข้อความประเภทเตือนที่ขึ้นเป็นสีเหลืองและเราจะบอกว่าไม่ พบตัวจัดการฟิสิกส์
‫เครื่องหมายอัศเจรีย์
‫ตอนนี้ฉันยังไม่ได้เปิดโปรแกรมแก้ไข ดังนั้นฉันจะทำการควบคุม shift B เพื่อสร้างภายในโค้ด
‫Visual Studio ปิดเทอร์มินัลเมื่อสำเร็จแล้วเปิดใหม่จากโครงการใหม่
‫เมื่อเปิดตัวแล้ว ให้ไปกดเล่น เปิดบันทึกผลลัพธ์ และเราจะเห็นข้อความบันทึก
‫มีการจัดการฟิสิกส์ที่ชื่อเป็น
‫ตลกพอ ฟิสิกส์จัดการ
‫ทีนี้จะเป็นอย่างไรถ้าเราต้องไปที่เครื่องเล่นบี๊บของเราและลบที่จับฟิสิกส์นั้นออกแล้วเล่นต่อไป
‫ตอนนี้ดูบันทึกผลลัพธ์ของเราและพวกเขาไป เรามีคำเตือนสีเหลืองว่าไม่พบที่จับฟิสิกส์
‫เลยเลิกเล่นกัน
‫ไปข้างหน้าและเพิ่มที่จับฟิสิกส์กลับเพราะเราต้องการมันและเราจะช่วยผู้เล่น
‫บี๊บ ของดีๆ.
‫ดังนั้นเราจึงได้ค้นพบวิธีที่เราสามารถจับส่วนประกอบอื่น ๆ จากภายในส่วนประกอบ และเราได้เรียนรู้วิธีจัดการกับพอยน์เตอร์ที่เป็นค่าว่าง
‫และเหตุใดเราจึงต้องระมัดระวัง
‫เจอกันใหม่ตอนหน้าค่ะ