‫สวัสดีและยินดีต้อนรับ.
‫การบรรยายนี้ เรากำลังจะทำให้ศัตรูของเรากลายเป็นภัยคุกคามมากขึ้นด้วยการใช้โหนดการยิงใน C++
‫มาดูวิธีทำกันเลยดีกว่า
‫ฟังก์ชันการทำงานชิ้นหนึ่งที่ขาดหายไปจากแผนผังพฤติกรรมอย่างชัดเจนก็คือความสามารถในการถ่ายภาพ
‫สิ่งที่ฉันต้องการจะทำคือย้ายไปที่ตำแหน่งของผู้เล่นแล้วยิง
‫แต่เราต้องการเปลี่ยนแปลงเล็กน้อยก่อนว่าเราจะเคลื่อนไหวอย่างไร
‫มีสองสิ่งที่ฉันต้องการปรับแต่ง ดังนั้นหากฉันเลือกการย้ายไปยัง Node สิ่งหนึ่งที่ฉันต้องการเปลี่ยนคือรัศมี
‫ฉันไม่ต้องการให้ศัตรูเข้ามาหาฉัน ดังนั้นถ้าฉันเปลี่ยนรัศมีที่ยอมรับได้ มันก็จะหยุดเคลื่อนที่ห่างจากฉันห้าเมตร
‫มันเลยจะหยุด
‫ขอระยะทางห้าเมตรดีๆ หน่อย
‫เขามาหาฉัน ไปกันเถอะ
‫และเขาก็หยุดและจ้องมอง
‫อีกสิ่งหนึ่งที่ฉันต้องการทำคือด้านล่างในส่วนกระดานดำ คุณจะเห็นว่ามีค่ากระดานดำที่สังเกตได้
‫ถ้าเราไม่ได้ตรวจสอบนั้น มาดูกันว่าจะเกิดอะไรขึ้นขณะที่ผมเคลื่อนไหว
‫โดยพื้นฐานแล้วสิ่งนี้ชัดเจนขึ้นเล็กน้อยเมื่อเรามีรัศมีที่เล็กกว่าที่ยอมรับได้
‫ทีนี้ลองติดมันลงไปที่ห้าสี่ตอนนี้
‫และถ้าฉันกดเล่น คุณจะเห็นว่าขณะที่ฉันเคลื่อนไหว
‫เขาไปที่ตำแหน่งสุดท้ายของฉันและเมื่อเขาไปถึงที่นั่นเท่านั้น เขาจะมาอัพเดทไหม
‫นั่นไม่ใช่สิ่งที่เราต้องการ
‫สิ่งที่เราต้องการคือให้เข้ามาหาเราตลอดเวลา
‫และถ้าคุณตรวจสอบค่ากระดานดำสังเกต สิ่งสำคัญคือ ทุกครั้งที่ตำแหน่งของผู้เล่นเปลี่ยนแปลง
‫เราจะอัปเดตตำแหน่งที่เราจะย้ายไป
‫ดังนั้น ถ้าฉันไปข้างหน้าและตีเล่นและเคลื่อนที่ คุณจะเห็นว่าเขาติดตามฉันอย่างต่อเนื่องและอัปเดตเส้นทางของเขา
‫นั่นคือสิ่งที่เราต้องการ
‫ตอนนี้เราสามารถเปลี่ยนรัศมีการยอมรับของเราเป็น 500 และมันก็ไม่ชัดเจน
‫แต่ก็ยังดีที่เรามีค่ากระดานดำที่เราสังเกตได้ที่นั่น
‫แล้วพฤติกรรมที่เราต้องการก็คือ เมื่อเขาเข้ามาในรัศมีของเราแล้วเขาจะหยุดยิงใส่เรา
‫เพื่อที่เราต้องการงานประเภทใหม่
‫เราจะสร้างงาน C++ ใหม่ที่นี่
‫ดังนั้นเราจะไปเพิ่มคลาส C++ ใหม่
‫จากนั้นเราจะไปแสดงทุกชั้นเรียนและมองหางานจังหวะ
‫ทีนี้ เราต้องการอันไหน โหนดงานบีตหรือกระดานดำบีตงาน
‫อันที่จริงเราไม่จำเป็นต้องใช้กุญแจเพราะเราแค่จะลองยิง
‫นั่นคือทั้งหมดที่เราจะทำ
‫เราจะเหนี่ยวไกปืนของเรา มิฉะนั้นการเล็งจะทำที่อื่นในแผนผังพฤติกรรมของเรา
‫เรามาเปิดโหนดงาน คลาสพื้นฐานที่นี่ และเราจะเรียกงานนี้
‫ขีดเส้นใต้
‫ยิง.
‫ไปข้างหน้าและสร้างชั้นเรียนนั้น
‫จากนั้นเราก็จบลงด้วยบางสิ่งเช่นนี้
‫เราก็เลยอยากทำแบบเดียวกัน
‫ความท้าทายเล็กๆ น้อยๆ สำหรับคุณในการตั้งค่าแบบเดียวกับที่เรามีสำหรับกระดานดำ กระดานดำที่ชัดเจน
‫เราต้องการมีชื่อ เราต้องการมีงานดำเนินการ
‫ตอนนี้ลองนึกภาพวิดีโอและลองทำดู
‫โอเค ยินดีต้อนรับกลับ
‫นั่นเป็นงานเล็ก ๆ
‫ฉันจะคัดลอกลายเซ็นจากค่ากระดานดำที่ชัดเจนไปถ่าย รวมทั้งส่วนสาธารณะและส่วนที่ได้รับการคุ้มครอง
‫ฉันจะเปลี่ยนชื่อคอนสตรัคเตอร์ของเรา
‫ฉันจะดำเนินการต่อไปและใช้ตัวสร้างของเรา
‫และสิ่งที่เราต้องทำคืออะไร?
‫เราจำเป็นต้องตั้งชื่อโหนดให้เท่ากับการยิง
‫นั่นคือสิ่งที่เราจะเรียกว่า
‫จากนั้นกลับไปที่ส่วนหัวของงานยิงและเราจะพยายามใช้งานการดำเนินการในตอนนี้
‫และเราแค่ต้องเรียกไปที่ super
‫ฉันจะคัดลอกจากไฟล์ CP มูลค่ากระดานดำที่ชัดเจน จากนั้นเราก็พร้อมที่จะเริ่มใช้งาน
‫อย่างแรกที่เราจะต้องทำตรงนี้ ให้มีพื้นที่เพิ่มขึ้นอีกหน่อย
‫คือเราจะต้องจับตัวจำนำของเรา
‫ทำไมเราต้องจับเบี้ยของเรา?
‫มาดูตัวละครมือปืนซึ่งเป็นเบี้ย
‫จำตัวละครที่ยิง?
‫Dot H มีวิธีการยิง
‫นั่นคือสิ่งที่เราต้องการจะเรียกโดยพื้นฐานแล้วเหมือนกับที่ผู้เล่นกำลังทำอยู่
‫เขากดปุ่มทริกเกอร์ค้างไว้ และนั่นคือวิธีเรียกวิธีการถ่ายภาพนี้
‫เราต้องการให้ AI สามารถทำได้เช่นเดียวกัน
‫เมื่อคุณมีงานถ่ายภาพ มันจะกดปุ่มทริกเกอร์ค้างไว้หรือกดปุ่มทริกเกอร์นั้นซ้ำๆ เพื่อให้งานดำเนินการเป็นสถานที่ที่เหมาะสมในการทำเช่นนี้
‫เราอาจจะกลับมาที่นี่ เพราะจำไว้ การกระทำนี้เป็นเพียงนัดเดียว
‫ไม่ใช่การถ่ายภาพต่อเนื่อง
‫เรากำลังจะทำอะไร?
‫เราจะคืนผลลัพธ์ความสำเร็จของโหนด ET หากเราทำสำเร็จหรือสำเร็จ
‫หากเราทำสำเร็จเพราะไม่ต้องคอยเย็นเห็บอย่างต่อเนื่อง
‫เราไม่ต้องการให้งานนี้ทำงานนานกว่าเฟรมเดียว
‫และอีกอย่างที่เราต้องทำคือ จับตัวจำนำตัวนั้น ตามที่ผมบอก
‫สิ่งที่ฉันจะทำคือจะแสดงให้คุณเห็นว่าคุณจะจับตัวควบคุม AI ได้อย่างไร
‫และจากตัวควบคุม AI เรารู้ว่าเราสามารถเรียกตัวรับจำนำเพื่อรับตัวจำนำที่ถูกควบคุมได้
‫และเรารู้ว่าเราสามารถโยนเบี้ยควบคุมนั้นไปใช้กับตัวละครยิงของเราได้
‫แล้วเราจะจับตัวควบคุม AI จากสิ่งนี้ได้อย่างไร?
‫เรามีองค์ประกอบแผนผังพฤติกรรม ซึ่งเรารู้ว่าอยู่บนตัวควบคุม AI
‫บางทีนั่นอาจมีบางอย่างที่เราสามารถใช้ได้ถ้าเราไปที่องค์ประกอบต้นไม้พฤติกรรม Yu
‫และดูวิธีการที่อาจเป็นประโยชน์ที่นี่
‫มีหลายอย่างในนี้ แต่ถ้าเรามองหาคอนโทรลเลอร์ เราไม่เห็นอะไรเลย แต่อาจอยู่ที่ใดที่หนึ่งในคลาสฐานของมัน
‫เพราะคลาสพาเรนต์สำหรับองค์ประกอบแผนผังพฤติกรรม YU เป็นส่วนประกอบสมองของ Yu
‫เราติดตามตัวนั้นและมองหาคอนโทรลเลอร์ที่นี่
‫คุณสามารถเห็นว่ามีคุณสมบัติสำหรับมัน
‫มีคนรับไหม?
‫ใช่ มีการเรียก get AI Owner และนั่นควรกลับมาถ้าเราวางเมาส์ไว้เหนือตัวชี้ตัวควบคุม AI
‫ดังนั้นคุณควรจะใช้สิ่งนั้นเพื่อจับตัวจำนำ โยนให้ตัวละครนักกีฬาแล้วเรียกวิธีการยิง
‫นั่นจึงเป็นความท้าทายของคุณที่จะเรียกวิธีการยิง เผยแพร่สู่สาธารณะ
‫รับจำนำ โยนเบี้ย โทร ยิง และทดสอบมันในแผนผังพฤติกรรมของคุณ
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫อย่างแรกเลย ขั้นตอนแรกคือเราต้องทำให้วิธีการถ่ายภาพนี้เป็นแบบสาธารณะ
‫เพราะต้องเรียกจากภายนอกคลาสนี้
‫ดังนั้นฉันจะทำให้มันเสียหาย
‫เราจะยิงกัน ให้พื้นที่หน่อย มีพื้นที่หายใจหน่อย
‫ฉันชอบพื้นที่สีขาวช่วยให้ฉันมองเห็น
‫ช่วยคิดหน่อย
‫จากนั้นเราจะไปถ่ายงาน BT
‫ก่อนอื่นเราจะตรวจสอบว่าคอนโทรลเลอร์ของเราไม่เป็นโมฆะ
‫มิฉะนั้น เราจะไม่สามารถใช้ตัวดำเนินการลูกศรกับมันได้
‫โดยทั่วไปแล้ว แนวปฏิบัติที่ดีในการตรวจสอบค่าว่างเหล่านี้
‫ดังนั้นหากเจ้าของ AI รายนี้ไม่เท่ากัน ขออภัย เท่ากับตัวชี้ null เราต้องการที่จะกลับมาเร็ว ๆ นี้พร้อมกับความล้มเหลว
‫ดังนั้นงานนี้จะล้มเหลวหากเราไม่มีตัวควบคุม AI
‫ที่ค่อนข้างตรงไปตรงมา
‫ดังนั้นฉันจะทำการคืนค่าโคลอนผลลัพธ์ของโหนด ET
‫โคลอนล้มเหลวเช่นนั้น
‫แล้วเราจะทำส่วนประกอบเจ้าของ หาเจ้าของ AI เราจะทำ -- กับมัน
‫อันที่จริง เราอาจจำเป็นต้องรวมไฟล์ส่วนหัวไว้ที่นี่
‫เรามาทำ hash กัน และมันจะเป็นเฟรมเวิร์กของเกมและคอนโทรลเลอร์
‫และอันที่จริง ฉันคิดว่า ใช่ ตัวควบคุมใดๆ ควรทำ แต่ฉันคิดว่าเราต้องการตัวควบคุม AI เพราะนั่นคือประเภทของพอยน์เตอร์
‫ที่เราจะย้อนกลับไป จากนั้นเราจะทำลูกศร และเราจะ รับจำนำที่นี่บ่นเกี่ยวกับบางสิ่งบางอย่างในหัวของไฟล์ของฉัน
‫บางทีฉันอาจไม่มีอะไรถูกต้อง
‫เฉือนไปข้างหน้าฉันดูเหมือนว่าฉันผิด
‫มันไม่จริงในกรอบเกม
‫คุณเพียงแค่มีตัวควบคุมเพื่อรวมไว้
‫สอนให้ฉันดูถูกดูหมิ่นเกี่ยวกับเรื่องนั้น
‫ดังนั้นเราจึงไป
‫ตอนนี้เราสามารถรับจำนำได้จาก
‫และอย่างที่ฉันพูด เราจำเป็นต้องแสดงด้วย
‫ดังนั้นเราจะทำการแคสต์ตามประเภทที่เราจะต้องแคสต์ไปที่ A ของตัวละครที่ยิง
‫นั่นคือเต็มรูปแบบของตัวละครนักกีฬา, ตัวละครนักกีฬา
‫และเราจะต้องตรวจสอบผลลัพธ์ของสิ่งนี้ด้วย
‫แต่เราจำเป็นต้องรวมตัวละครนักกีฬาของเราด้วย
‫ดังนั้นแฮชจึงรวมตัวละครนักกีฬาไว้ที่ด้านบน
‫ทอดด์ เอช.
‫เช่นนั้นและเราจะเก็บสิ่งนั้นไว้ในตัวละครนักกีฬาประเภทพอยน์เตอร์
‫สตาร์จะเป็นตัวละครของเรา
‫นั่นคือสิ่งที่เราจะเรียกมันว่า
‫เราจะเก็บมันไว้ที่นั่น
‫และโดยพื้นฐานแล้ว เราต้องตรวจสอบให้แน่ใจว่าทั้ง get -- ที่ส่งคืนเพราะ get -- อาจคืนค่า
‫null หากตาไม่ได้ควบคุมการจำนำ
‫หรือนักแสดงนี้อาจคืนค่า null หากประเภทนั้นไม่ใช่ปัญหาสำหรับตัวละครหากเขาควบคุมประเภทอื่นของ
‫--
‫โชคดีที่สองตัวนี้เข้ากันได้ค่อนข้างดี ดังนั้น ถ้าคุณลองและใช้ตัวชี้ค่าว่าง ผลลัพธ์ก็เป็นเพียงตัวชี้ว่าง
‫ซึ่งเป็นสาเหตุที่เราทำสิ่งนี้ได้
‫สิ่งเหล่านี้ตรวจสอบทั้งหมดในบรรทัดเดียว
‫จากนั้นเราก็สร้าง if character ได้
‫เท่ากับตัวชี้ค่าว่าง
‫จากนั้นเราต้องการที่จะล้มเหลวอีกครั้ง
‫เลยกลับมา
‫ผลลัพธ์โหนด ET
‫โคลอน
‫โคลอนล้มเหลวเช่นนั้น
‫และสุดท้าย หลังจากตรวจสอบทั้งหมดแล้ว และเรารู้ว่าเรามีตัวละครที่เป็นมือปืน
‫เราควรเรียกว่ายิงได้ ลูกศรของตัวละคร และยิงอย่างนั้น ในที่สุดเราก็จะสามารถยิงได้
‫ไปที่ต้นไม้พฤติกรรมของเรากันเถอะ
‫และในที่นี้ เราต้องการดึงลงมาเพื่อวางโหนดใหม่และมองหาภารกิจการยิงใหม่ที่เราเข้ามาที่นี่
‫และฉันไม่แน่ใจว่าฉันคอมไพล์แล้วหรือเปล่า ดังนั้นฉันจะตรวจสอบให้แน่ใจว่าทุกอย่างคอมไพล์อีกครั้ง
‫และเมื่อทำเสร็จแล้ว เราก็สามารถเข้าไปเล่นและดูว่าผู้ชายคนนี้จะขึ้นมายิงหรือไม่
‫ใช่เขาทำ.
‫น่าเสียดายที่เขายิงซ้ำแล้วซ้ำอีกและยิงตัวเองที่เท้า
‫มีบางอย่างไม่ค่อยเขียนอยู่ตรงนั้น
‫ดังนั้นจึงมีสองสิ่งผิดปกติ
‫สำหรับการเริ่มต้น เขาพยายามฆ่าตัวตายด้วยการยิงสองนัด และดูเหมือนว่าเขาจะยิงทุกเฟรมเลย
‫ซึ่งน่าจะสมเหตุสมผลเพราะเราได้เห็นผู้เล่น เราย้ายไปหาพวกเขาแล้วยิงเป็นการกระทำสุดท้าย
‫เรามาถึงแล้ว ซึ่งเราจะดำเนินการซ้ำๆ
‫สิ่งที่เราอยากทำคือเปลี่ยนมันเป็นลำดับ
‫ฉันจะลากโหนดที่นี่ที่เรียกว่าทำโหนดลำดับ
‫และสิ่งที่เราจะทำคือเราจะยิง แล้วรอ แล้วก็ยิง จากนั้นรอและทำซ้ำไปเรื่อย
‫ๆ
‫ยิงก่อน รออีกหน่อย
‫บางทีเราอาจจะรอ ไม่รู้สิ สำหรับ 1/2 ระหว่างช็อต แล้วเราจะต้องการทำซ้ำ ซึ่งเราสามารถทำกับมัณฑนากร
‫ดังนั้นหากฉันคลิกขวาเพิ่มมัณฑนากรและมองหามัณฑนากรลูป คุณจะเห็นจำนวนครั้งที่คุณต้องการให้วนซ้ำ
‫มันบอกสามครั้ง
‫เราไม่ต้องการมันสามครั้ง
‫โดยพื้นฐานแล้วเราต้องการให้มันวนซ้ำไปเรื่อย ๆ จนกว่าเราจะต้องการย้ายหรือเราต้องละสายตาจากผู้เล่นและเราต้องไปตรวจสอบ
‫ดังนั้นเราจะไปข้างหน้าและกดเล่นและดูว่าใช้ได้หรือไม่
‫ขึ้นมาหาฉัน
‫ยิง, ยิง, ยิง
‫แต่เขาไม่ได้ตีฉันจริงๆ
‫คุณจะเห็นได้ว่าภาพของเขาพุ่งเข้าหาตัวเขาเองจริงๆ
‫และเราจะจัดการกับจุดบกพร่องนั้นในการบรรยายครั้งต่อไป
‫แล้วเจอกัน.