‫เฮ้.
‫ยินดีต้อนรับกลับ.
‫ตอนนี้เราได้ตั้งค่าฟังก์ชันเรียกกลับที่ผูกไว้กับผู้รับมอบสิทธิ์เมื่อได้รับความเสียหาย
‫และขั้นตอนสุดท้ายคือการสร้างเหตุการณ์ความเสียหายนั้นจริงๆ
‫และเราต้องการทำสิ่งนี้เมื่อโปรเจกไทล์ของเราชนกับบางสิ่ง
‫เมื่อเราออกอากาศให้ตัวแทนรายนี้ เราสามารถสร้างความเสียหายให้กับสิ่งที่เราโจมตีได้
‫และเราจะออกอากาศเหตุการณ์นี้โดยใช้ความเสียหายที่เกิดขึ้น ซึ่งเป็นของคลาสสแตติกการเล่นเกม
‫มาดูฟังก์ชันความเสียหายที่ใช้กัน
‫ต่อไปนี้คือเอกสารสำหรับความเสียหายที่นำไปใช้ซึ่งระบุว่าทำร้ายนักแสดงที่ระบุด้วยความเสียหายทั่วไป
‫นี่เป็นฟังก์ชันทั่วไปสำหรับการสร้างความเสียหาย
‫และสิ่งที่เราทำเพื่อตอบสนองต่อการออกอากาศสำหรับตัวแทนรายนี้ขึ้นอยู่กับเรา
‫ตอนนี้เราเห็นว่าเราต้องรวมสถิติการเล่นเกมและในไวยากรณ์เราเห็นพารามิเตอร์อินพุตหลายตัว
‫ตอนนี้เราได้รับคำอธิบายของพารามิเตอร์แล้ว
‫หากเราเลื่อนลงมาเรื่อยๆ เราจะเห็นว่านักแสดงที่เสียหายนั้นดี นักแสดงที่จะได้รับความเสียหาย
‫ความเสียหายพื้นฐานคือความเสียหายพื้นฐานที่ใช้เอกสารอธิบายจริงๆ ที่นี่
‫ขอบคุณ.
‫ตัวกระตุ้นเหตุการณ์ระดับมหากาพย์คือตัวควบคุมที่รับผิดชอบในการก่อให้เกิดความเสียหายนี้
‫และมันบอกว่า ตัวอย่างเช่น ผู้เล่นที่ยิงอาวุธ
‫เมื่อมันบอกว่าผู้เล่นมันหมายถึงตัวควบคุมนั้น
‫จากนั้นเราก็มีผู้ก่อให้เกิดความเสียหายซึ่งเป็นตัวสร้างความเสียหายที่แท้จริง
‫มันบอกว่าระเบิดมือที่ระเบิด
‫ในกรณีของเรา มันจะเป็นโพรเจกไทล์ที่ระเบิด
‫และสุดท้าย เรามีประเภทประเภทความเสียหาย ซึ่งเป็นประเภทที่อธิบายถึงความเสียหายที่ได้ทำ
‫ตอนนี้สำรองข้อมูลในส่วนไวยากรณ์ เราจะเห็นประเภทของอินพุตเหล่านี้ และเราเห็นว่าคลาสประเภทความเสียหายเป็นคลาสย่อยของ
‫และเราเคยเห็นมาก่อนว่าคลาสย่อย TW จะตอบสนองพารามิเตอร์อินพุตประเภท U
‫เมื่อเราเรียก ใช้ความเสียหาย เราสามารถผ่านคลาส U แทนประเภทความเสียหายที่เราต้องการใช้
‫เราจะพูดถึงวิธีที่เราจะตอบสนองพารามิเตอร์อินพุตนี้ในอีกสักครู่
‫ดังนั้นฟังก์ชันสถิตสีการเล่นเกม ความเสียหายที่ใช้จะใช้พารามิเตอร์อินพุตสองสามตัว
‫ลองวางกลยุทธ์ว่าเราจะส่งต่อค่าที่เหมาะสมได้อย่างไรเมื่อเราเรียกใช้ฟังก์ชันนี้ เราเห็นว่าก่อนอื่นเราต้องการนักแสดงที่เสียหาย
‫เอาล่ะ กลับไปที่ CP ของกระสุนปืนที่เราอยากจะเรียกว่าใช้สร้างความเสียหาย
‫เราต้องการทำสิ่งนี้ใน Hit และเราไม่ต้องการบันทึกเหล่านี้อีกต่อไป
‫ดังนั้นฉันจะลบออกและสังเกตว่า on hit callback ของเราได้รับอินพุตบางส่วนเมื่อถูกเรียก
‫เมื่อผู้รับมอบสิทธิ์ on component hit ออกอากาศ เราจะเห็นว่าเรามีนักแสดงคนอื่น
‫ดังนั้นเราจึงสามารถเข้าถึงนักแสดงที่โดนกระสุนปืนและนี่คือนักแสดงที่เราอยากจะสร้างความเสียหาย
‫เพื่อดูแลพารามิเตอร์อินพุตแรก
‫มันจะเป็นนักแสดงคนอื่น
‫ต่อไป เราต้องการจำนวนความเสียหาย ซึ่งหมายความว่ากระสุนปืนของเราควรมีตัวแปรความเสียหาย เพื่อให้เรารู้ว่าต้องใช้ความเสียหายมากน้อยเพียงใด
‫เหตุใดเราไม่ลองไปที่โปรเจกไทล์ FX และเพิ่มตัวแปรความเสียหายและนี่อาจเป็นแบบลอยได้
‫เราสามารถเรียกความเสียหายนี้และเริ่มต้นเป็นค่าได้ เช่น 50 F และเนื่องจากนี่คือสิ่งที่เราอาจต้องการทดสอบ
‫เราจึงให้คุณสมบัติ U เพื่อแสดงและแก้ไขได้ ที่ไหนก็ได้
‫ดังนั้นตอนนี้เรามีจำนวนความเสียหายที่จะส่งต่อเมื่อเราเรียกรับความเสียหาย
‫ตอนนี้พารามิเตอร์ตัวต่อไปคือตัวกระตุ้น และเราเห็นว่านี่เป็นตัวควบคุมประเภท A
‫แล้วเราจะเอาคอนโทรลมาได้ยังไง?
‫เราได้เห็นแล้วว่าเราสามารถหาเจ้าขององค์ประกอบเฉพาะด้วยฟังก์ชันรับเจ้าของได้
‫และนี่จะส่งคืนนักแสดงที่เป็นเจ้าขององค์ประกอบเฉพาะ โพรเจกไทล์เหล่านี้ถูกสร้างขึ้นแบบไดนามิก
‫ดังนั้นเราต้องตรวจสอบให้แน่ใจว่าถ้าเราจะเรียก get owner ว่าเจ้าของได้รับการตั้งค่าแล้ว เรากำลังวางไข่เหล่านี้จากฐานจำนำ
‫ดังนั้นหากเราเข้าสู่ฐานจำนำ
‫CP นี่คือบรรทัดที่เรากำลังวางไข่นักแสดง แต่ Spawn Actor ยังส่งคืนตัวชี้ไปยังนักแสดงที่วางไข่เพื่อให้เราสามารถเก็บสิ่งนี้ไว้ในตัวแปรท้องถิ่น
‫ตัวอย่างเช่น เราสามารถพูดได้ว่าโปรเจ็กไทล์อัตโนมัติและกำหนดค่าที่ส่งคืนจากตัวแสดงการวางไข่
‫ตอนนี้ถ้าคุณไม่คุ้นเคยกับ auto ก็อนุญาตให้คอมไพเลอร์หาประเภทที่จะกำหนดให้กับตัวแปรใหม่นี้
‫หากคุณวางเมาส์เหนือมัน คุณจะเห็นว่ามันมีตัวชี้กระสุนแบบ A เพราะนั่นคือสิ่งที่เรากำลังเซ็นชื่อจากฟังก์ชันตัวแสดงการวางไข่
‫นี่ก็เหมือนกับว่าเราวางตัวชี้โพรเจกไทล์ไว้ตรงนี้ และตอนนี้เราสามารถเข้าถึงโพรเจกไทล์ที่สร้างขึ้นใหม่ได้
‫และเหตุผลที่เราต้องการทำคือเราต้องการตั้งเจ้าของ
‫เราต้องการให้แน่ใจว่าเจ้าของถูกตั้งค่าเป็นเบี้ยที่วางไข่
‫เราสามารถพูดได้ว่าโพรเจกไทล์
‫และมีฟังก์ชั่นสำหรับเจ้าของชุดที่เรียกว่า
‫เจ้าของฉากรับนักแสดงและเราจะผ่านมันไปเพื่อที่ว่าเมื่อใดก็ตามที่เบี้ยตัวใดตัวหนึ่งของเราวางไข่กระสุน
‫มันจะตั้งค่าเจ้าของกระสุนนั้น
‫ด้วยวิธีนี้ ถ้าเราโทรหา get owner ไกลออกไป เราจะได้อินสแตนซ์ของคลาสที่เป็นเจ้าของโพรเจกไทล์นั้น
‫กลับมาที่นี่ในโปรเจ็กไทล์ DHCP เรามีการเรียกใช้ฟังก์ชันเจ้าของ และเราสามารถเก็บไว้ในตัวแปรโลคัล
‫ฉันจะใช้ auto อีกครั้งและเรียกสิ่งนี้ว่าเจ้าของของฉันและตั้งค่าเป็นผลลัพธ์ที่ส่งคืนโดย
‫get owner
‫ตอนนี้เรามีตัวชี้นักแสดงท้องถิ่นที่เก็บค่าของเจ้าของ
‫ตอนนี้เราสามารถเข้าถึงตัวควบคุม instigator จากนักแสดงคนนี้ได้
‫ก่อนที่เราจะทำเช่นนั้น เป็นความคิดที่ดีที่จะตรวจสอบเพื่อให้แน่ใจว่าเจ้าของของฉันไม่เป็นโมฆะ
‫ฉันจะบอกว่าถ้าเจ้าของของฉันเป็นโมฆะ เท่ากับ null พอยน์เตอร์ แล้วฉันก็จะกลับมา
‫ตอนนี้ หากคุณถ้าร่างกายมีคำสั่งเดียวแบบนี้ คุณสามารถวางไว้ในบรรทัดเดียวกันโดยไม่ต้องใส่เหล็กดัด
‫เผื่อว่าคุณไม่รู้
‫และ null pointer เป็นคีย์เวิร์ดใน C++ ที่ให้คุณตรวจสอบว่าพอยน์เตอร์นั้นเป็น null pointer หรือไม่
‫ดังนั้นหากเจ้าของของฉันเป็นโมฆะ เราจะออกจากฟังก์ชันก่อนกำหนดและไม่ดำเนินการอย่างอื่น
‫อย่างที่ฉันพูดไป เราสามารถรับตัวควบคุม instigator จากเจ้าของของฉัน และนั่นคือสิ่งที่ใช้ฟังก์ชันที่เรียกว่า
‫get instigator controller
‫และถ้าเราวางเมาส์เหนือสิ่งนี้ เราจะเห็นว่ามันส่งคืนตัวชี้ตัวควบคุม A
‫ฉันจะใช้ auto และเก็บไว้ในตัวแปรท้องถิ่นที่ฉันจะเรียกเจ้าของของฉันว่า instigator
‫ตอนนี้เรารู้แล้วว่าต้องผ่านอะไรมาบ้างในฐานะผู้ยุยง
‫ข้อมูลถัดไปคือตัวสร้างความเสียหาย และนี่คือตัวแสดงที่ทำความเสียหายให้กับกระสุนปืน
‫นี่ก็จะเป็นเพียงแค่นี้
‫และนั่นทำให้พารามิเตอร์อินพุตสุดท้ายซึ่งเป็นประเภทความเสียหาย
‫และเราเห็นว่ามันเป็นคลาสย่อย ซึ่งหมายความว่าเราต้องการคลาสการใช้งานที่เหมาะสมจึงจะผ่าน
‫N ต่อไปนี้คือเอกสารประกอบ Unreal Engine สำหรับประเภทความเสียหายของคุณ
‫มันบอกว่าประเภทความเสียหายมีวัตถุประสงค์เพื่อกำหนดและอธิบายรูปแบบเฉพาะของความเสียหาย และเพื่อเป็นช่องทางในการปรับแต่งการตอบสนองต่อความเสียหายจากแหล่งต่างๆ
‫ตอนนี้ เราจะไม่ปรับแต่งความเสียหายของเรา
‫เราแค่ต้องปฏิบัติตามพารามิเตอร์อินพุต ซึ่งหมายความว่าเราต้องการค่าคลาส U ที่แสดงถึงคลาสประเภทที่คุณสร้างความเสียหาย
‫ตอนนี้ใน C++ หากเราต้องการรับคลาส YOU ของคลาสใดคลาสหนึ่ง เช่น you damage type เราสามารถเรียกใช้ฟังก์ชันที่เรียกว่า
‫static class
‫สิ่งนี้สืบทอดมาจากคลาสอ็อบเจ็กต์ของคุณ
‫แน่นอนว่าเราใช้ประเภทความเสียหายของคุณที่นี่ ดังนั้นเราต้องการส่วนหัวนั้น
‫ดังนั้นจากเอกสาร ฉันจะคัดลอกบรรทัดรวม และฉันจะวางมันไว้บนสุดของโปรเจกไทล์
‫CP และตอนนี้คุณจะเห็นว่าฟังก์ชันคลาสสแตติกนี้ส่งคืนตัวชี้คลาส U และคลาสใหม่จะแสดงประเภทความเสียหายใหม่
‫คลาส C++
‫ตอนนี้ เนื่องจากเราไม่ได้สร้างพิมพ์เขียวตามประเภทความเสียหายของคุณและตั้งค่าข้อมูลเพิ่มเติม
‫เราจึงไม่ต้องการคลาสย่อยของตัวแปรจริงๆ
‫ในกรณีนี้ เราสามารถใช้คลาสสแตติกได้ และนี่จะคืนค่าคลาส U ที่แสดงประเภทนี้
‫และเราสามารถเก็บสิ่งนี้ไว้ในตัวแปรได้ถ้าต้องการ และฉันจะเรียกคลาสประเภทความเสียหายนี้
‫และนี่คือสิ่งที่เราสามารถส่งผ่านเข้าไปเป็นพารามิเตอร์ขั้นสุดท้ายเพื่อสร้างความเสียหายได้
‫ตอนนี้เรามีข้อมูลทั้งหมดที่เราต้องส่งไปยังฟังก์ชันใช้ความเสียหาย
‫แต่ก่อนที่เราจะทำเช่นนั้น ฉันต้องการตรวจสอบสองสามข้อเพื่อให้แน่ใจว่าเหมาะสมที่เราเรียกฟังก์ชันนี้
‫ฉันจะทำคำสั่ง if ที่นี่
‫อันดับแรก ฉันต้องการให้แน่ใจว่านักแสดงคนอื่นๆ ไม่เป็นโมฆะ
‫ฉันจะวางนักแสดงคนอื่นที่นี่
‫ฉันจะใส่ a และที่นี่ เพื่อตรวจสอบให้แน่ใจว่านักแสดงคนอื่นไม่เท่ากับนักแสดงคนนี้
‫เราไม่ต้องการที่จะสร้างความเสียหายให้กับตัวเองหากเราเป็นกระสุนปืนตอนนี้ ฉันจะวางปลายอีกด้านหนึ่งและให้แน่ใจว่านักแสดงคนอื่นไม่เท่ากับเจ้าของของฉัน
‫มันคงไม่ดีถ้าโพรเจกไทล์สร้างความเสียหายให้กับเจ้าของ
‫และตอนนี้ถ้าเราเข้าไปข้างใน if statement เราก็รู้ว่ามันเหมาะสมที่จะเรียก use damage
‫เพื่อให้เราทำได้
‫และนั่นจะเป็นความท้าทายของคุณ
‫ดังนั้นในคำสั่ง if ใหม่ของเราในฟังก์ชัน on hit ให้เรียกสแตติกในการเล่นเกมของคุณใช้ฟังก์ชันสร้างความเสียหาย
‫ซึ่งหมายความว่าคุณจะต้องใส่ส่วนหัวที่ถูกต้องสำหรับสถิติการเล่นเกม และคุณรู้ว่าต้องส่งพารามิเตอร์อินพุตใด
‫ดังนั้นหยุดวิดีโอชั่วคราวและเพิ่มการเรียกใช้ฟังก์ชันเพื่อใช้ความเสียหายในฟังก์ชัน on hit ทันที
‫ตกลง.
‫ดังนั้นฉันจึงอยู่ใน CP ของกระสุนปืนและฉันจะรวมไฟล์ส่วนหัวสำหรับสถิติการเล่นเกมและเราสามารถเห็นได้จากหน้าเอกสารความเสียหายประยุกต์ที่รวมไว้คือ
‫kismet slash gameplay statics
‫ดังนั้นฉันจะวางมันลงไป และตอนนี้ฉันพร้อมที่จะเรียกความเสียหายแล้ว
‫ดังนั้นฉันจะเรียกคุณว่าสถิตยศาสตร์ของการเล่นเกมใช้ความเสียหาย
‫ทันทีที่ฉันพิมพ์วงเล็บเปิดนั้น ฉันจะได้รับป๊อปอัปเตือนฉันถึงพารามิเตอร์อินพุตที่ฉันต้องการ
‫และคนแรกคือนักแสดงที่เสียหาย และนั่นจะเป็นนักแสดงคนอื่น
‫ดังนั้นเราจะพิมพ์นักแสดงคนอื่นต่อไป
‫เราต้องการจำนวนความเสียหาย และเราเพิ่มความเสียหายนี้ลอยอยู่ใน FX แบบโพรเจกไทล์ ซึ่งเราตั้งค่าเป็น 50
‫ดังนั้นฉันจะผ่านความเสียหายสิ้นสุดต่อไป
‫เราต้องการผู้ปลุกระดม และเรามีผู้ปลุกระดมของเจ้าของ
‫ดังนั้นฉันจะผ่าน instigator เจ้าของของฉัน
‫รองลงมาคือผู้เสียหาย
‫และแน่นอน โพรเจกไทล์เป็นตัวสร้างความเสียหาย
‫ดังนั้นเราจะผ่านในนี้
‫และสุดท้าย เราต้องการ subclass สำหรับคุณ ประเภทความเสียหาย ซึ่งเรารู้ว่า U class pointer จะตอบสนองสิ่งนั้น และนั่นเป็นเหตุผลที่เรามีประเภทความเสียหายของเรา
‫ผ่านชั้นประเภทความเสียหายกันเถอะ
‫และด้วยเหตุนี้ เรากำลังเรียกความเสียหายว่า
‫ดังนั้นเมื่อเราเรียกสิ่งนี้ เราจะสร้างเหตุการณ์ความเสียหาย และผู้รับมอบสิทธิ์รับความเสียหายใด ๆ จะออกอากาศเพื่อตอบสนองต่อสิ่งนี้
‫ซึ่งหมายความว่าในความเสียหายองค์ประกอบสุขภาพของเราที่ได้รับจะถูกเรียก
‫ดังนั้นเราจึงต้องทำอะไรบางอย่างที่นี่ในความเสียหายที่ได้รับ
‫มันสมเหตุสมผลแล้วที่จะรับความเสียหายนี้และลบจำนวนนั้นออกจากสุขภาพ
‫ก่อนที่เราจะทำอย่างนั้น ฉันต้องการให้แน่ใจว่าความเสียหายนั้นไม่ต่ำกว่าหรือเท่ากับศูนย์
‫F ควรทำการตรวจสอบเหล่านี้ก่อนที่จะบันทึกความเสียหาย เพียงเพื่อให้แน่ใจว่าเราจะไม่ใช้ค่าที่ไม่สมเหตุสมผล
‫เช่น ศูนย์หรือค่าติดลบ
‫ถ้าอย่างนั้นเราก็แค่กลับมา
‫และแน่นอน ถ้าคุณต้องการเนียนและทำในสิ่งที่ฉันทำในกระสุนปืนที่ CP เราสามารถวางผลตอบแทนตรงนั้นได้
‫ทีนี้ ถ้าเราผ่านเส้นนี้ไปได้ ความเสียหายจะเป็นค่าบวก ดังนั้นเราจึงสามารถใช้พลังชีวิตและใช้ค่าลบเท่ากับความเสียหายได้
‫และเพื่อให้แน่ใจว่ามันใช้งานได้ ทำไมเราไม่ใส่บันทึก euy ที่นี่ล่ะ
‫ดังนั้นบันทึกบันทึก Yui ข้อความเตือนชั่วคราว และเราสามารถพิมพ์ค่าของสุขภาพด้วยเปอร์เซ็นต์ F และสุขภาพและด้วยสิ่งที่เราสามารถรวบรวมได้
‫เมื่อคอมไพล์สำเร็จแล้ว เราจะกลับไปที่เอดิเตอร์และเมื่อเปิดล็อกเอาท์พุตแล้ว มาเริ่มเล่นกันเลย
‫ทีนี้มาดูกันว่าเราจะโดนกระสุนปืนไหม
‫และเราไปที่นั่น
‫พลังชีวิตของเราตอนนี้ลดลงเหลือ 50 และถ้าเราโดนโจมตีอีกครั้ง เราก็มีเหตุการณ์การโจมตีค่อนข้างน้อยเพราะเราพุ่งเข้าหากระสุนปืนหลายครั้งเร็วมาก
‫แต่เราเห็นว่าสุขภาพของเราได้รับการบันทึกอย่างถูกต้อง
‫ดังนั้นเราจึงต้องแน่ใจว่าเราใช้พฤติกรรมที่ถูกต้องเมื่อเสียชีวิตเมื่อสุขภาพเป็นศูนย์
‫แต่เราต้องตรวจสอบให้แน่ใจด้วยว่าเราไม่ได้รับกิจกรรม Hit นี้เป็นสแปมหลายครั้ง
‫ตอนนี้เรารู้แล้วว่าโพรเจกไทล์ควรจะถูกทำลายเมื่อโดนบางสิ่ง ดังนั้นวิธีที่ดีที่สุดในการป้องกันการสแปมเหตุการณ์ที่กระทบคือการทำลายโพรเจกไทล์
‫นั่นคือสิ่งสุดท้ายที่เราจะทำในวิดีโอนี้
‫ย้อนกลับไปในโพรเจกไทล์หลังจากสร้างความเสียหาย สิ่งที่เราทำได้คือให้โพรเจกไทล์ทำลายตัวเอง และนั่นจะไม่ง่ายไปกว่านี้แล้ว
‫เราเรียกฟังก์ชันทำลาย
‫ดังนั้นด้วยการคอมไพล์อีกครั้งในเครื่องมือแก้ไข เราสามารถไปข้างหน้าและโดนกระสุนปืนและดูนั่น
‫โพรเจกไทล์หายไป
‫มันเลยสร้างความเสียหายแล้วก็หายไป
‫และแน่นอน เราสามารถทดสอบการชนกับหอคอยด้วยการระเบิดพวกมันด้วยขีปนาวุธ และทำให้แน่ใจว่าเหตุการณ์ที่ชนเหล่านั้นถูกกระตุ้น
‫และอย่างที่คุณเห็น ฉันสามารถสแปมสิ่งนี้ด้วยโพรเจกไทล์ทั้งหมด และเราจะเห็นว่าค่าพลังชีวิตสำหรับหอคอยที่น่าสงสารนี้ที่นี่กำลังเป็นลบอย่างมาก
‫โดยสรุป เราเรียกใช้ฟังก์ชันใช้ความเสียหาย และส่งผลให้มีการออกอากาศสำหรับผู้รับมอบสิทธิ์รับความเสียหาย
‫เราบันทึกสุขภาพในองค์ประกอบสุขภาพและเราทำลายกระสุนปืน
‫ตอนนี้เราได้ดูแลความเสียหายแล้ว
‫เรายังไม่ได้ดูแลความตาย
‫นั่นจะเป็นหนึ่งในสิ่งต่อไปที่เราจะกล่าวถึงในวิดีโอหน้า
‫เจอกันใหม่ครับ