‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะสร้างส่วนประกอบใหม่ใน C++ ซึ่งเป็นกล่องทริกเกอร์ ซึ่งจะรายงานให้เราทราบเมื่อเราก้าวเข้าไปในซุ้มหรือวางวัตถุใดๆ
‫ไว้ในซุ้ม
‫คุณจะเห็นว่าเราได้รับข้อความพิมพ์เขียวเล็กๆ ที่มุมบนซ้ายมือ
‫และในการทำเช่นนั้น เราจะต้องเข้าใจว่าการทับซ้อน การบล็อก และการตอบสนองต่อการชนที่แตกต่างกันใน
‫Unreal เป็นอย่างไร
‫ลองดำน้ำในและหา
‫ตอนนี้เราคุ้นเคยกับวิธีการทำงานของช่องทางการติดตามแล้ว
‫เรารู้ว่าคุณสามารถมีการตอบสนองตามวัตถุต่างๆ ในฉากของเรา เช่น ไม้พุ่มนี้
‫ที่นี่ คุณจะเห็นว่ามันมีการเพิกเฉยต่อการตอบสนองต่อร่องรอยของอาวุธ แต่จะบล็อกร่องรอยการมองเห็น
‫แล้วมีตัวอย่างกระจกกันกระสุนนี้
‫มันบล็อกอาวุธ แต่ช่วยให้มองเห็นได้และกำแพงอิฐซึ่งบล็อกทั้งสองอย่าง
‫ดังนั้นคุณจึงสามารถดูว่าระบบนี้ทำงานอย่างไรกับช่องทางการติดตาม
‫ทีนี้ จะเกิดอะไรขึ้นถ้าเรากำลังตัดสินใจว่าวัตถุใดสามารถซ้อนทับกัน วัตถุใดทะลุผ่าน วัตถุใดปิดกั้นซึ่งกันและกัน
‫ที่อาจซับซ้อนกว่านี้เล็กน้อย
‫เราเห็นสิ่งนี้แล้วเมื่อเราพยายามให้การ์กอยล์ทับกับเบี้ยของเรา
‫นี่คือวิธีการทำงาน
‫โดยพื้นฐานแล้ว เราใช้ประเภทวัตถุเหล่านี้
‫แต่ละอ็อบเจ็กต์สามารถเป็นของประเภทอ็อบเจ็กต์เฉพาะได้
‫และนี่จะแตกต่างจากระบบประเภทใน C++
‫เหล่านี้เป็นประเภทการชนกัน
‫ดังนั้นคุณอาจมีวัตถุ A และวัตถุ B และในการตั้งค่า ถ้าเราไปลองดูการตั้งค่าบนการ์กอยล์ของเรา
‫คุณจะเห็นว่าพวกมันมีประเภทของวัตถุเป็นของตัวเอง
‫อันนี้เป็นวัตถุคงที่ของโลก แต่ด้านล่างก็มีการตอบสนองต่อวัตถุประเภทอื่นเช่นกัน
‫ดังนั้นคุณจะเห็นได้ว่าวัตถุนี้จะบล็อกสถิตโลกอื่น มันจะบล็อกไดนามิกของโลกอื่น
‫มันจะทับซ้อนประเภทจำนำ มันจะบล็อกวัตถุฟิสิกส์ และค่อนข้างบล็อกทุกประเภทอื่น ๆ
‫และเห็นได้ชัดว่าจำนำเองถ้าเราไปหาผู้เล่น BP ของเรา
‫และดูที่ส่วนประกอบแคปซูล ดูรายละเอียด และเลื่อนลงไปยังตำแหน่งที่มีการตั้งค่าการชนกันล่วงหน้า
‫หากเราสามารถขยายพรีเซ็ต Pawn Collision ออกไปได้ เราไม่สามารถแก้ไขมันได้ แต่เราจะเห็นว่ามันกำลังทำอะไรอยู่
‫และคุณจะเห็นได้ว่ามันตอบสนองต่อโลกที่นิ่งเฉย
‫ดังนั้นการตอบสนองต่อโลกคงที่คือการปิดกั้น
‫ดังนั้นเราจึงมีสองตัวเลือกที่แตกต่างกันที่นี่
‫โรงรับจำนำบอกว่าฉันบล็อกสถิตโลก แต่การ์กอยล์บอกว่าฉันซ้อนเบี้ย
‫แล้วจะเกิดอะไรขึ้น?
‫นี่คือที่มาของตารางนี้ และฉันมีลิงก์ไปยังโพสต์ในบล็อกนี้ หากคุณต้องการอ่านแบบเต็มในแหล่งข้อมูลการบรรยาย
‫ดังนั้นคุณจะเห็นได้ว่าต้องใช้การโต้ตอบที่บล็อกน้อยที่สุดระหว่างคนทั้งสอง
‫ดังนั้น ถ้าวัตถุ A เป็นเบี้ย และเรากำลังบอกว่า เฮ้ ฉันควรปิดกั้นตัวการ์กอยล์นั้น แต่ตัวการ์กอยล์วัตถุ
‫B และมันบอกว่า เฮ้ ฉันควรทับตัวเบี้ยนั้น
‫มันจะใช้การบล็อกน้อยที่สุดของสองตัวนั้น และมันจะทับซ้อนกัน
‫ดังนั้น หมายความว่าถ้าคุณต้องการให้สองสิ่งปิดกั้นกันและกัน พวกเขาทั้งสองต้องยอมรับว่านั่นคือสิ่งที่พวกเขาต้องการทำ
‫ลองดูตัวอย่างอื่นที่นี่
‫เรามีผู้เล่นที่เป็นวัตถุจำนำประเภทหนึ่ง และวัตถุที่ตอบสนองต่อสัญลักษณ์แทนตัวอื่น ๆ คือการบล็อกพวกมันและวัตถุคงที่ของโลกคือการบล็อกพวกมัน
‫กำแพงอิฐเป็นวัตถุคงที่ของโลก
‫มันสามารถบล็อกเบี้ยและบล็อกโลกคงที่
‫ทั้งสองจึงตกลงกันได้
‫ตอนนี้ไม้พุ่มก็หยุดนิ่งอยู่กับที่ แต่มันซ้อนทับกับเบี้ย
‫มันเหมือนกับการ์กอยล์ของเรามาก แต่มันบล็อกสถิตย์โลก
‫ดังนั้น ถ้าคุณลงไปดูสิ่งที่จะเกิดขึ้นคือตัวจำนำจะพยายามเดินทางผ่านพุ่มไม้และอาจเพราะมันใช้ตัวเลือกการบล็อกน้อยที่สุดซึ่งทับซ้อนกันและสร้างเหตุการณ์ที่ทับซ้อนกันซึ่งเราสามารถเชื่อมโยงเป็นรหัสได้
‫หรือพิมพ์เขียว ในขณะที่มันไม่สามารถทะลุผ่านกำแพงอิฐได้ และมันสร้างเหตุการณ์ตีอีกครั้ง
‫ซึ่งเป็นสิ่งที่เราสามารถเชื่อมโยงใน Blueprint หรือ C++
‫เหตุใดฉันจึงเข้าไปในส่วนลึกทั้งหมดนี้?
‫เพราะสิ่งที่ผมอยากทำคือใส่วัตถุที่เรามองไม่เห็นโดยพื้นฐานแล้วในกำแพงนี้ ซึ่งทำให้เราสามารถใส่กอบลินที่นี่
‫และเราจะได้เหตุการณ์เมื่อสิ่งนั้นเกิดขึ้น
‫การ์กอยล์จะจัดงานและพูดว่า เฮ้ ฉันมีอะไรทับซ้อนกัน
‫เหตุใดทั้งหมดนี้จึงสำคัญ?
‫เพราะผมอยากใส่สิ่งที่มองไม่เห็นแต่จะทับกับกากอยและแจ้งให้เราทราบถึงข้อเท็จจริงนั้น
‫จากนั้นเราสามารถสืบค้นจาก C++ หรือรับเหตุการณ์ใน Blueprint ได้ด้วยวิธีใดวิธีหนึ่ง
‫และวิธีที่เราจะทำคือ อย่างแรกเลย สร้างพิมพ์เขียวจากกำแพงดันเจี้ยนนี้
‫ดังนั้น ผมจะคลิกปุ่มพิมพ์เขียวในบานหน้าต่างรายละเอียด สร้าง subclass
‫ใหม่ แล้วตั้งชื่อมันว่า beep ขีดเส้นใต้กำแพงลับ แล้วเราจะกด select เพื่อสร้างมันขึ้นมา และใบปะหน้าไปที่ main ของเรา หน้าต่างและมีผู้เสนอญัตติอยู่บนนั้น
‫สิ่งที่ฉันต้องการเพิ่มในที่นี้ก็คือส่วนประกอบที่เรียกว่าการชนกันของกล่อง
‫ดังนั้นถ้าเราคลิกที่กล่องชนกัน คุณจะเห็นว่ามันมองไม่เห็นโดยสิ้นเชิง
‫มันให้ส่วนต่อขยายของกล่องแก่คุณซึ่งเราสามารถเปลี่ยนแปลงได้ เราสามารถทำให้มันใหญ่ขึ้นเพื่อที่ทุกที่ที่เราวางการ์กอยล์ในกล่องนี้
‫มันจะยอมรับมัน
‫และเราจะเห็นว่ามีตัวเลือกการชนกันตรงนี้
‫เรามีไดนามิกที่ทับซ้อนกันทั้งหมดเป็นค่าเริ่มต้น แต่เป็นค่าที่ตั้งล่วงหน้าเริ่มต้น
‫แต่ถ้าเรากดกำหนดเอง คุณจะเห็นว่าเราสามารถเปลี่ยนประเภทวัตถุและเราสามารถเปลี่ยนวิธีที่วัตถุตอบสนองต่อสิ่งต่าง
‫ๆ ได้ที่นี่
‫และฉันคิดว่าที่สำคัญที่สุด อย่างที่คุณเห็น มันถูกตั้งค่าให้ทับซ้อนกับประเภทอ็อบเจกต์ส่วนใหญ่ ซึ่งหมายความว่าแม้ว่าจะไม่ได้ตั้งค่าให้คาบเกี่ยวกันกับไดนามิกของโลก
‫แต่มันก็จะคาบเกี่ยวกัน
‫จะไม่ปิดกั้นอะไร
‫มันจะให้เราวางตัวการ์กอยล์ไว้ตรงนี้
‫ดังนั้นฉันจะไปลบส่วนประกอบนั้นออกจากฉาก เพราะสิ่งที่ฉันต้องการทำคือสร้างส่วนประกอบใหม่ใน
‫C++ โดยอิงจากการชนกันของกล่องนั้น
‫ตอนนี้ฉันแค่ต้องการแสดงให้คุณเห็นว่ากล่องนี้ ถ้าเราตั้งค่ากลับเป็นค่าที่ตั้งไว้ตามค่าเริ่มต้นที่เปิดอยู่
‫ซึ่งซ้อนทับไดนามิกทั้งหมดที่ฉันเชื่อ และเราตรวจสอบ หรือตามที่ได้รับการตรวจสอบแล้ว จริง ๆ แล้วการสร้างเหตุการณ์ที่ทับซ้อนกันนั้นได้รับการตรวจสอบแล้ว
‫จากนั้นเราสามารถไปที่กราฟเหตุการณ์ของเราและเราสามารถคลิกขวาที่นี่และมองหาการทับซ้อนกัน
‫และที่ด้านบนสุด คุณจะเห็นการเพิ่มส่วนประกอบเริ่มซ้อนทับกันสำหรับกล่อง
‫ดังนั้นถ้าเราคลิกเข้าไปแล้วลองเปลี่ยนชื่อองค์ประกอบกล่องให้ทริกเกอร์พื้นที่เช่น
‫โดยพื้นฐานแล้ว หากเราทับซ้อนกับพื้นที่ทริกเกอร์ เราจะได้รายการคุณสมบัติของสิ่งที่ซ้อนทับกับเรา
‫เพื่อเราจะได้
‫มันทับซ้อนกัน
‫เราสามารถรับชื่อได้
‫เพื่อรับชื่อที่แสดงคือชื่อของโหนด
‫จากนั้นเราก็สามารถนำมันออกมาพิมพ์สตริงผลลัพธ์และต่อมันเข้ากับพินการดำเนินการและเราสามารถไปข้างหน้าและกดปุ่มเล่น
‫และถ้าเราเดินขึ้นไปบนพื้นที่ คุณจะเห็นว่ามันกำลังบอกว่าเครื่องเล่นบี๊บเป็นสิ่งที่ซ้อนทับกัน
‫ตอนนี้ฉันมองไม่เห็นบริเวณนั้นเพราะมันมืดมาก
‫ฉันจะไปที่กำแพงลับอีกครั้ง แล้วส่งเสียงบี๊บ และฉันจะเพิ่มส่วนประกอบสปอตไลท์ ซึ่งฉันจะวางไว้ในซุ้มเล็กๆ
‫นี้ หมุนให้คว่ำหน้าลงและทำให้พื้นที่สว่างขึ้น ที่เราต้องการวัตถุ
‫ในฉากนี้เราเห็นได้ชัดเจนมาก
‫ไปตีกันเล่นๆ แล้วเดินขึ้นไปที่ซุ้มนั้น
‫ถ้าเราซ้อนทับกัน มันบอกว่ามีเครื่องเล่นเสียงบี๊บซ้อนทับกัน และเราสามารถไปหยิบการ์กอยล์ของเราจากห้องขังนี้โดยใช้เครื่องคว้านที่ทำขึ้นใหม่
‫และเราสามารถนำกากอยล์นั้นมาวางไว้ในบริเวณนี้
‫อย่างไรก็ตาม ดูเหมือนว่าจะไม่ก่อให้เกิดเหตุการณ์ทับซ้อนใดๆ และนั่นเป็นเพราะว่าการปะทะกันมีสองฝ่ายตามที่เราต้องการ
‫นอกจากนี้ยังมีสองฝ่ายเพื่อสร้างเหตุการณ์ที่ทับซ้อนกัน
‫เพียงเพราะเราเปิดใช้งานองค์ประกอบกล่องนั้น ไม่ได้หมายความว่าการ์กอยล์ที่เคลื่อนเข้าไปจะเตือนเราถึงเหตุการณ์ที่ทับซ้อนกัน
‫สิ่งที่เราต้องทำคือเราต้องไปที่การ์กอยล์แล้วตรวจสอบ สร้างเหตุการณ์ที่ทับซ้อนกันด้วย
‫ดังนั้นเหตุการณ์ที่ทับซ้อนกันควรเกิดขึ้น
‫ไปหยิบการ์กอยล์กันเถอะ พามันไปที่ซุ้มแล้วติดมันเข้าไป
‫และตอนนี้เรากำลังมีเหตุการณ์ที่กำลังจะเกิดขึ้น
‫เมื่อสิ่งนั้นเกิดขึ้น รูปปั้นการ์กอยล์กำลังได้รับการจดทะเบียนจริงๆ
‫ตอนนี้ ฉันไม่ต้องการใช้เหตุการณ์พิมพ์เขียวในกรณีนี้โดยเฉพาะ
‫ดังนั้นสิ่งที่ฉันต้องการทำคือนำองค์ประกอบพื้นที่ทริกเกอร์ของเราแล้วเปลี่ยนให้เป็นส่วนประกอบ
‫C++ ที่สามารถประเมินได้ว่ามีรูปปั้น Gargoyle ในครั้งเดียวหรือไม่
‫วิธีที่เราจะทำสิ่งนี้คือเราจะไปที่องค์ประกอบเพิ่ม สร้างองค์ประกอบ C++ ใหม่
‫และในฐานะที่เป็นคลาสหลัก แทนที่จะเลือก active component หรือ scene
‫component เราจะไปที่ทุกคลาสและเราจะค้นหา box component แทน
‫และคุณสามารถเห็นส่วนประกอบรูปร่าง ส่วนประกอบกล่อง ส่วนประกอบที่เราต้องการ และเราสามารถดำเนินการต่อและกดถัดไป
‫ดังนั้นฉันจึงขอท้าให้คุณสร้างองค์ประกอบนี้ ซึ่งฉันได้แสดงวิธีตั้งค่าคลาสหลักแล้ว
‫ดังนั้นคุณจะตั้งชื่อให้มันทริกเกอร์ส่วนประกอบ และคุณจะต้องคัดลอกบางสิ่งจากส่วนประกอบอื่นๆ ที่เราสร้างขึ้น
‫เนื่องจากไม่ได้ตั้งค่าในลักษณะเดียวกัน
‫เนื่องจากเรามาจากผู้ปกครองคนละคน คุณจะต้องคัดลอกไลน์ของคุณ
‫โดยพื้นฐานแล้วทั้งบรรทัดนั้นว่างเปล่าในองค์ประกอบทริกเกอร์เนื่องจากคุณจะสร้างขึ้น
‫ดังนั้นคัดลอกจากตัวจับหรือผู้เสนอญัตติของคุณ มิฉะนั้น คุณจะไม่สามารถเพิ่มส่วนประกอบลงในพิมพ์เขียวของคุณได้
‫ดังนั้น คุณควรใช้คอมโพเนนต์ทริกเกอร์ใหม่นี้เพื่อแทนที่คอมโพเนนต์กล่องปัจจุบันของเรา และพิมพ์บางอย่างจาก Begin
‫Play
‫อีกครั้ง ฟีเจอร์ขนาดใหญ่จะไม่ได้รับการตั้งค่าโดยอัตโนมัติสำหรับคุณ ดังนั้น คุณจะต้องคัดลอกจากไฟล์ส่วนหัวและไฟล์
‫C++ ของส่วนประกอบอื่นๆ ของเราเพื่อตั้งค่า
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ผมจะเรียกมันว่าองค์ประกอบทริกเกอร์
‫ทั้งหมดหนึ่งคำและกดเพื่อสร้างชั้นเรียน
‫ดังนั้นตามที่คาดการณ์ว่าคลาสคลาสของคุณจะไม่มีอะไรอยู่ในวงเล็บ และถ้าเราไปดูบรรณาธิการของเราแล้วไปที่กำแพงลับของ
‫BP ลองเพิ่มองค์ประกอบนี้และค้นหาทริกเกอร์ คุณจะไม่เห็นสิ่งใดขึ้นมา
‫และเหตุผลก็คือถ้าเราไปที่จุด H และดูที่บรรทัดคลาสการใช้งาน คุณจะเห็นว่ามีบางส่วนในนี้ที่ระบุว่าพิมพ์เขียวสามารถวางไข่ได้
‫ที่สำคัญ เราจำเป็นต้องคัดลอกสิ่งนี้
‫มีกลุ่มคลาสด้วย
‫เราอาจคัดลอกสิ่งทั้งหมดได้เช่นกันเพราะสิ่งนี้ช่วยให้เราสร้างองค์ประกอบนี้ในพิมพ์เขียวเพื่อให้เราสามารถไปและวางสิ่งนี้เป็นบรรทัดคลาสสำหรับองค์ประกอบทริกเกอร์
‫แล้วอีกอย่าง ถ้าเราไปคว้า คุณจะเห็นว่ามันใหญ่มาก มันอยู่ในส่วนที่ได้รับการป้องกัน
‫และเราสามารถคัดลอกคำจำกัดความของฟังก์ชันเริ่มเล่นนั้น คัดลอกไปยังองค์ประกอบทริกเกอร์ของเราแล้วใส่เป็น
‫มันอยู่ในตัวจับ ใต้ร่างกายที่สร้างขึ้น
‫จากนั้นเราสามารถเข้าไปคว้า CP และดูว่าการเล่นนั้นใหญ่แค่ไหน
‫ในที่นี้คุณจะเห็นได้ว่ามันมีความเจ๋งถึงขั้นสุดยอดในการเล่นที่สำคัญจริงๆ
‫เราจะคัดลอกสิ่งนั้น ไปที่องค์ประกอบทริกเกอร์
‫CP และเราจะเปลี่ยนคุณจับโคลอนเป็นองค์ประกอบทริกเกอร์ เริ่มเล่น
‫จากนั้นในนี้ เราสามารถใส่บันทึกของคุณ และเราจะเขียนข้อความง่ายๆ เช่น องค์ประกอบทริกเกอร์ที่ยังมีชีวิตอยู่
‫และเราจะดำเนินการรวบรวมต่อไป
‫อาจใช้เวลาสักครู่ เนื่องจากเราได้ทำการเปลี่ยนแปลงที่สำคัญบางอย่างในไฟล์ส่วนหัวของเรา
‫และเมื่อเสร็จแล้ว เราสามารถเข้าไปในกำแพงลับ BP ของเรา ไปที่เพิ่มและค้นหาทริกเกอร์
‫และในนี้ คุณจะเห็นว่าเรามีองค์ประกอบทริกเกอร์นั้น
‫ตอนนี้เราสามารถเพิ่มเข้าไปได้
‫เราสามารถลบพื้นที่ทริกเกอร์ที่เราได้ตั้งค่าไว้ก่อนหน้านี้
‫เพียงไปข้างหน้าและลบออกและตรวจสอบว่าเราต้องการลบ
‫โดยทั่วไปจะทำให้เหตุการณ์นี้ที่เราสร้างขึ้นเป็นโมฆะและเราสามารถตรวจสอบว่าการชนกันนั้นได้รับการตั้งค่าตามที่เราต้องการบนทริกเกอร์ถ้าเราจะดู
‫อย่างไรก็ตาม มันถูกตั้งค่าให้คาบเกี่ยวกันไดนามิกทั้งหมดและสร้างเหตุการณ์คาบเกี่ยวกัน
‫และสุดท้าย สิ่งที่เราจำเป็นต้องแทนที่คือเหตุการณ์นี้ที่นี่ ซึ่งเราจะเลือกทริกเกอร์คลิกขวาและไปที่คลี่คลายเหตุการณ์การเพิ่มสำหรับการชนกันของทริกเกอร์และเพิ่มบนคอมโพเนนต์เริ่มต้นที่ทับซ้อนกัน
‫นั่นคือสิ่งที่เราใช้มาก่อน
‫ยึดหมุดที่ใช้งานอยู่และต่อหมุดการดำเนินการเพื่อไปยังระดับดันเจี้ยน
‫ไปหยิบการ์กอยล์มา ลองติดไว้ที่ซุ้มและเราสังเกตว่ามันไม่ได้ผล
‫ตอนนี้เราได้ตั้งค่าทริกเกอร์นั้นแล้ว
‫ไปที่วิวพอร์ตและคุณจะเห็นว่าที่จริงทริกเกอร์ไม่ได้เกิดจากการที่ยังไม่ใหญ่พอ
‫เราวางตำแหน่งไม่ถูกต้อง
‫ไปวางมันไว้ตรงกลางซุ้มแล้วเพิ่มคุณสมบัติขอบเขตกล่องเพื่อที่เราจะได้จับสิ่งที่เราใส่ไว้ในพื้นที่ส่วนโค้งนี้
‫ไม่สำคัญหรอกว่ามันจะใหญ่ขึ้นเล็กน้อยและให้ระยะขอบที่ปลอดภัยและเราสามารถเข้าไปในดันเจี้ยน
‫ตีเล่น แล้วก้าวเข้าไปในซุ้มประตูได้
‫และนั่นเองที่ตรวจพบว่าผู้เล่น BP ได้เดินเข้าไปในซุ้มนั้น
‫สิ่งที่ดี
‫ในการบรรยายนี้ เราได้เรียนรู้ทั้งหมดเกี่ยวกับประเภทของออบเจ็กต์และการตอบสนองของประเภทออบเจ็กต์ และเราได้ใช้สิ่งนั้นเพื่อตั้งค่าคอมโพเนนต์ทริกเกอร์นี้
‫เจอกันใหม่ตอนหน้าค่ะ