‫ดังนั้น ถ้าฉันเข้าไปใกล้หอคอยของเรา ฉันจะเห็นว่าพวกมันกำลังวาดรูปทรงกลมดีบัก พิสูจน์ว่าพวกมันเรียกฟังก์ชันไฟ
‫และพวกมันกำลังทำเช่นนั้นทุก 2 วินาที
‫นอกจากนั้น พวกเขายังเรียกฟังก์ชันนี้เท่านั้น
‫ถ้าฉันอยู่ในระยะยิง ถ้าฉันกลับมาที่นี่ คุณจะสังเกตเห็นว่ามันไม่ได้วาดรูปทรงกลมดีบั๊ก
‫ดังนั้นจึงต้องมีการตรวจสอบระยะทางด้วย
‫และทันทีที่ฉันเข้าใกล้พอ พวกเขาก็ไปที่นั่น วาดทรงกลมดีบักเหล่านั้น
‫สวัสดีและยินดีต้อนรับกลับ
‫ตอนนี้ เราได้สร้างฟังก์ชันการยิงแล้ว และเรากำลังใช้สิ่งนั้นในประเภทรถถัง เพราะเราผูกมันเข้ากับการทำแผนที่การยิง
‫แต่เราต้องการนำสิ่งนี้มาใช้ซ้ำกับคลาสทาวเวอร์ด้วย
‫ตอนนี้ แทนที่จะใช้อินพุตของผู้ใช้สำหรับคลาสทาวเวอร์ เราจะใช้ตัวจับเวลา
‫เรากำลังจะสร้างตัวจับเวลาสำหรับชั้นทาวเวอร์เพื่อให้ตัวจับเวลาสามารถเรียกฟังก์ชันไฟได้
‫บ่อยครั้ง เราจะกำหนดจำนวนวินาทีที่ระบุระหว่างการเรียกใช้ฟังก์ชันไฟ
‫เนื่องจากเราต้องการให้ฟังก์ชั่นไฟถูกเรียกบ่อย ๆ ในชั้นทาวเวอร์ เราจึงต้องพูดถึงตัวจับเวลาในตอนนี้
‫Unreal Engine มีความสามารถในการตั้งค่าตัวจับเวลาโดยใช้คลาสที่เรียกว่า F Timer Manager
‫มีตัวจัดการตัวจับเวลาทั่วโลกซึ่งจัดการตัวจับเวลาในโลก
‫ตอนนี้ตัวจัดการตัวจับเวลาโลกนี้มีฟังก์ชันที่เรียกว่า Set Timer และ set timer จะรับอินพุตจำนวนมาก
‫เช่น ตัวจับเวลา
‫นี่คือหมายเลขอ้างอิงสำหรับตัวจับเวลาเฉพาะที่จัดการโดยตัวจัดการเวลา
‫ซึ่งช่วยให้ผู้จัดการมีตัวจับเวลาได้หลายตัว และเราสามารถเข้าถึงข้อมูลตัวจับเวลาสำหรับตัวจับเวลาแต่ละตัวได้โดยใช้ตัวจับเวลาเป็นชื่อหรือรหัสสำหรับตัวจับเวลานั้น
‫นี่คือวัตถุของตัวจับเวลาประเภท F
‫ดังนั้นเราจึงสร้างตัวจับเวลาและส่งต่อไปยังฟังก์ชันตั้งเวลา
‫ตอนนี้ตั้งเวลายังต้องการอินพุตอื่น ๆ เช่นอัตราหรือระยะเวลาที่เราควรรอก่อนที่จะทำอะไรจริง
‫ๆ
‫ตอนนี้มีบางอย่างอยู่ในฟังก์ชันการโทรกลับของเรา
‫เราสร้างฟังก์ชันและเราผูกฟังก์ชันนี้กับตัวจับเวลาเพื่อให้ทันทีที่เวลาผ่านไป โดยเฉพาะอัตราของตัวจับเวลา
‫ฟังก์ชันการโทรกลับของเราจะเรียกใช้ได้
‫เราจึงเห็นว่าเราต้องการของบางอย่างสำหรับตัวจับเวลา และเราจะวางสิ่งเหล่านี้ไว้ในชั้นทาวเวอร์
‫ไปที่ Tower H และในไฟล์ Tower H เราจะเพิ่มตัวแปรส่วนตัว
‫ดังนั้นภายใต้ระยะการยิง เราจำเป็นต้องมีตัวจับเวลาของเรา
‫นี่คือตัวจับเวลา F และเราสามารถเรียกตัวจับเวลาอัตราการยิงนี้ได้
‫และเราต้องการอัตราการยิงที่จะลอยตัวด้วย
‫เราจะเรียกอัตราการยิงนี้ และเราสามารถเริ่มต้นไปที่จุด F สองจุด
‫ด้วยวิธีนี้เราจะต้องรอสองวินาทีก่อนที่ฟังก์ชันเรียกกลับของเราจะถูกเรียกจริงๆ
‫และเมื่อพูดถึงฟังก์ชันการโทรกลับ เราต้องการมันจริงๆ
‫เราจะสร้างฟังก์ชันเป็นโมฆะ และเรียกเงื่อนไขนี้ว่าเช็คไฟได้
‫ดังนั้นเราจึงมีตัวจับเวลาและทันทีที่เราตั้งตัวจับเวลาและเริ่มทำงาน เราก็มีเวลา 2 วินาทีในการรอก่อนที่ตัวจับเวลาจะส่งผลให้ฟังก์ชันของเราถูกเรียก
‫และผมเรียกสภาพนี้ว่าเช็คไฟ เพราะเราสามารถตรวจสอบว่าหอคอยของเราควรจะเรียกฟังก์ชันไฟได้หรือไม่
‫เพื่อให้เราสามารถกำหนดเงื่อนไขบางอย่างที่เราสามารถตรวจสอบได้ เพื่อให้แน่ใจว่าควรเรียกไฟ
‫ตอนนี้เราได้ประกาศฟังก์ชันสภาพไฟแล้ว
‫เราต้องนิยามมันเพื่อที่เราจะเข้าไปที่ Tower CPP และกำหนดฟังก์ชันที่นี่
‫ฉันจะวางมันไว้ใต้เริ่มเล่น ดังนั้นฉันจะให้ตัวฟังก์ชันและชื่อคลาสทาวเวอร์หน้าชื่อฟังก์ชัน
‫ตอนนี้เรามีฟังก์ชันแล้ว แต่เราต้องตั้งเวลาจริงๆ เพื่อที่เวลานั้นจะเริ่มทำงานและฟังก์ชันนั้นจะถูกเรียกใช้เมื่อสิ้นสุดเวลานั้น
‫และเราสามารถตั้งเวลาที่นี่และเริ่มเล่นเพื่อให้มันเริ่มทำงานตั้งแต่ต้นเกม
‫ดังนั้นเราจึงพูดถึงตัวจัดการตัวจับเวลาโลกและเราสามารถเข้าถึงได้ด้วยฟังก์ชั่นที่เรียกว่า Get World Timer
‫Manager
‫ตอนนี้รับ World Timer Manager ส่งคืนวัตถุตัวจัดการตัวจับเวลา F
‫และเนื่องจากเราใช้ประเภทนั้น เราจึงต้องรวมไฟล์ส่วนหัวสำหรับตัวจัดการเวลา F
‫ดังนั้นนี่คือตัวจัดการตัวจับเวลา h.
‫และเรายังสามารถเห็นฟังก์ชันบางอย่างที่เป็นของคลาสนี้
‫เลื่อนดูสิ่งเหล่านี้หากคุณสนใจฟังก์ชันต่างๆ ทั้งหมดที่เป็นของตัวจัดการตัวจับเวลา
‫F
‫ดังนั้นเราจึงรวมไฟล์ส่วนหัวนี้ไว้ที่ด้านบนสุดของหอคอย ใต้ส่วนอื่นๆ ได้
‫ตอนนี้เรามีไฟล์ส่วนหัวแล้ว ตอนนี้เราสามารถเข้าถึงตัวจัดการตัวจับเวลาโลกและฟังก์ชันที่เราสนใจเรียกว่าตัวตั้งเวลา
‫ตอนนี้รับตัวจัดการตัวจับเวลาโลกเพียงแค่ส่งคืนตัวจัดการตัวจับเวลา F จะไม่ส่งคืนตัวชี้
‫เราจะใช้จุดแทน
‫Arrow และเราจะเรียกตั้งเวลา
‫ตอนนี้ตัวตั้งเวลามีหลายรุ่นหรือฟังก์ชั่นโอเวอร์โหลด
‫ตอนนี้ vs code มีป๊อปอัปนี้ที่ช่วยให้เราผ่านการโอเวอร์โหลดแต่ละครั้งและดูเวอร์ชันต่างๆ ของฟังก์ชันนี้
‫และเวอร์ชันที่ฉันสนใจก่อนอื่นใช้ที่จับตัวจับเวลา F และเราจะใช้ตัวจับเวลาอัตราการยิง
‫ซึ่งเราประกาศไว้ใน Tower H
‫ตอนนี้พารามิเตอร์ถัดไปสำหรับการโอเวอร์โหลดฟังก์ชันเฉพาะของเราจะเป็นคลาสผู้ใช้ เช่นเดียวกับในแกนผูกและการดำเนินการผูก
‫นี่คือคลาสที่เรากำลังดำเนินการอยู่ โดยเราจะโยงฟังก์ชันสำหรับสิ่งนั้นจะเป็นสิ่งนี้
‫ต่อไปจะเป็นฟังก์ชันเรียกกลับ ซึ่งจะเป็นเงื่อนไขการตรวจสอบหอ A ของเรา ซึ่งเป็นฟังก์ชันที่เราเพิ่งสร้างขึ้น
‫ตอนนี้เราต้องการที่อยู่ของโอเปอเรเตอร์เพราะตัวตั้งเวลาใช้ที่อยู่ของฟังก์ชัน
‫ตอนนี้ พารามิเตอร์ถัดไปคือทศนิยมสำหรับอัตรานี้ เป็นเวลาที่ควรผ่านไปก่อนที่การโทรกลับของเราจะถูกเรียก
‫นั่นจะเป็นอัตราการยิงของเรา
‫และพารามิเตอร์สุดท้ายคือบูลีนซึ่งจะระบุว่าตัวจับเวลานี้ควรวนซ้ำหรือไม่
‫ตอนนี้ฉันต้องการให้ฟังก์ชันเรียกกลับของเราถูกเรียกทุกๆ 2 วินาที ดังนั้นฉันจึงต้องการให้ตัวจับเวลานี้วนซ้ำ
‫ดังนั้นฉันจะพูดจริง
‫หากเราส่งเป็นเท็จ 2 วินาทีก็จะผ่านไป
‫ฟังก์ชั่นของเราจะถูกเรียกและนั่นก็คือ
‫แต่เนื่องจากเราตั้งค่าให้วนซ้ำ ฟังก์ชันของเราจะถูกเรียกหลังจาก 2 วินาที หลังจากนั้นตัวจับเวลาจะรีสตาร์ท
‫และหลังจากนั้นอีกสองวินาที ฟังก์ชันจะถูกเรียกอีกครั้งและจะวนซ้ำต่อไปจนกว่าเกมจะจบลง
‫ตอนนี้เรามีฟังก์ชันที่ผูกไว้กับตัวจับเวลาของเรา และตั้งค่าให้เรียกใช้ทุก 2 วินาที
‫ดังนั้นเราจึงผูกฟังก์ชันเข้ากับตัวจับเวลาของเรา และมันจะถูกเรียกทุกๆ 2 วินาที
‫แต่เราต้องการหลักฐานหรือการยืนยันว่าฟังก์ชันนี้ถูกเรียกใช้จริง
‫ดังนั้นสำหรับความท้าทายของคุณในชั้นทาวเวอร์ ไปที่ฟังก์ชันเรียกกลับใหม่ของเรา ตรวจสอบสภาพอัคคีภัย
‫ตรวจสอบให้แน่ใจว่ารถถังอยู่ในระยะยิง
‫คุณจะตรวจสอบระยะทางจากหอคอยถึงถัง
‫และเรารู้วิธีการทำเช่นนี้เพราะเราทำสิ่งนี้ในฟังก์ชันติ๊กอยู่แล้ว
‫ดังนั้นคุณอาจต้องดูในฟังก์ชันติ๊กและดูว่ามันทำอย่างไรเพื่อเตือนตัวเอง ตอนนี้ให้ตรวจสอบระยะทางนั้น
‫ตรวจสอบให้แน่ใจว่าเราอยู่ในระยะการยิง แล้วถ้าเราอยู่ ให้เรียกใช้ฟังก์ชันไฟ หยุดวิดีโอชั่วคราวแล้วใช้งาน
‫นี้ตอนนี้
‫ตกลง.
‫ดังนั้นฉันจึงกลับมาที่ Tower CP และฉันจะเลื่อนขึ้นไปที่ฟังก์ชันขีดเพื่อเตือนตัวเองว่าได้ระยะทางนี้มาได้อย่างไร
‫และตรวจสอบเพื่อดูว่ามันอยู่ในระยะยิงหรือไม่
‫ตอนนี้เราสามารถนำรหัสนี้กลับมาใช้ใหม่ได้ ที่นี่ และตรวจสอบสภาพการติดไฟ
‫ตอนนี้โค้ดที่นำกลับมาใช้ใหม่ไม่ได้มีประสิทธิภาพมากนัก ดังนั้นเราอาจคิดเกี่ยวกับการปรับโครงสร้างใหม่ แต่ก่อนอื่น ให้ตรวจสอบให้แน่ใจว่าเราได้ทำงานเพื่อให้เราสามารถตรวจสอบตัวชี้รถถังของเราก่อนเพื่อให้แน่ใจว่าถูกต้อง
‫ผมจะไปทำที่นี่และตรวจสอบสภาพไฟ
‫ฉันจะบอกว่าถ้าแทงค์ และถ้าแทงค์ใช้ได้ สิ่งต่อไปที่เราทำได้คือหาระยะทางนั้น
‫ซึ่งก็คือค่านี้ที่คำนวณด้วยฟังก์ชัน f vector dist
‫ผมจะเอาไปวางตรงนี้ในสภาพเช็คไฟ
‫สิ่งต่อไปที่เราทำคือตรวจสอบว่าระยะทางน้อยกว่าหรือเท่ากับระยะการยิงหรือไม่
‫นั่นคือสิ่งที่เราจะทำด้านล่าง
‫เราจะบอกว่าถ้าระยะทางน้อยกว่าหรือเท่ากับระยะการยิง และถ้าเป็นกรณีนี้ เราก็เรียกฟังก์ชันไฟได้
‫เราจะเรียกว่าไฟ ง่ายๆ แค่นี้เอง
‫ไปข้างหน้าและรวบรวมสิ่งนี้และเรากลับมาที่บรรณาธิการและฉันจะเล่นและเข้าสู่ระยะยิง
‫และฉันเห็นได้ว่าหอคอยของเรากำลังวาดรูปทรงกลมดีบักที่ปลายกระบอกปืน ดังนั้นเราจะเห็นว่ามีการเรียกฟังก์ชันไฟนั้นและทำงานในลักษณะเดียวกันกับหอคอยเช่นเดียวกับในถัง
‫เท่านี้ก็เยี่ยมแล้ว
‫นี่เป็นการพิสูจน์ให้เราเห็นว่าตัวจับเวลากำลังทำงานอยู่และมีการเรียกฟังก์ชันเรียกกลับของเราทุกๆ 2 วินาที
‫โอเค เราเรียกฟังก์ชันไฟนี้ทุกๆ 2 วินาที ตอนนี้อยู่ในการตรวจสอบ สภาพไฟ
‫เรามีฟังก์ชันนี้ซึ่งเราจะเห็นว่าเราอยู่ในระยะหรือไม่ และเรากำลังทำสิ่งเดียวกันนี้ในฟังก์ชันติ๊ก
‫นี่จึงเป็นโอกาสที่ดีที่จะปรับโครงสร้างใหม่
‫เราสามารถสร้างฟังก์ชันบางอย่างที่จะคืนค่าบูลีนให้เราหากเราอยู่ในระยะของรถถัง
‫เหตุใดเราจึงไม่ดำเนินการต่อไปและจัดองค์ประกอบใหม่อย่างรวดเร็วในฟังก์ชันการคืนค่าวัว
‫ใน Tower H เรามาสร้างฟังก์ชั่นส่วนตัวกัน
‫มันจะกลับบูลและเราจะบอกว่าในระยะการยิง
‫ตอนนี้เป็นเกมง่ายๆ และหอคอยของเราจะอยู่ในระยะของรถถังเท่านั้น
‫จึงไม่คลุมเครือเพราะว่าไม่มีอะไรอื่นที่หอคอยต้องการจะตรวจสอบเพื่อดูว่าตอนนี้อยู่ในระยะหรือไม่
‫หากนี่เป็นเกมที่ซับซ้อนกว่านี้กับสิ่งอื่นที่หอคอยต้องการตรวจสอบระยะทาง เราก็อาจจะ
‫ตั้งชื่อให้แตกต่างกันเล็กน้อย แต่เราสามารถเรียกสิ่งนี้ว่าในระยะยิงได้
‫และสิ่งที่ฉันจะทำคือนำสิ่งนี้ไปใช้ที่นี่ในทาวเวอร์
‫ไปข้างหน้าและสร้างฟังก์ชันร่างกาย
‫เราต้องการหอคอยที่ซ่อมชื่อฟังก์ชันไว้ล่วงหน้า
‫และสิ่งที่เราจะทำที่นี่ก็คือ การตรวจสอบระยะทางแบบเดียวกัน
‫ดังนั้นก่อนอื่นเราจะตรวจสอบเพื่อให้แน่ใจว่ารถถังนั้นถูกต้องด้วย if check
‫ถ้าเป็นเช่นนั้น เราก็จะได้ระยะทางนี้ เพื่อที่เราจะสามารถคัดลอกเส้นนี้ และสร้างระยะห่างในพื้นที่ของเราที่ลอยตรงนี้
‫และเพียงตรวจสอบระยะห่างนั้นกับระยะการยิง เพื่อที่เราจะบอกได้ว่าระยะทางนั้นน้อยกว่าหรือเท่ากับระยะการยิงหรือไม่
‫และถ้าเป็นกรณีนี้ เราก็สามารถคืนค่า true ได้
‫ฟังก์ชันนี้สามารถคืนค่าเป็นจริงได้
‫และตอนนี้เรามีฟังก์ชันที่เราเรียกได้ว่าจะคืนค่าเป็นจริงหากเราอยู่ในระยะ
‫ทีนี้ ทันทีที่เรากด return true line ที่นี่ในคำสั่ง if ฟังก์ชันจะส่งคืน
‫เราจะกระโดดออกจากฟังก์ชัน
‫ดังนั้นอย่างอื่นหลังจากนี้ if คำสั่งจะไม่ทำงาน
‫สิ่งที่เราทำได้คือที่ส่วนท้ายสุดของฟังก์ชัน in fire range เราสามารถคืนค่า false ได้ เพราะหากเราไปถึงค่า
‫return จริง เราจะไม่มีวันไปถึง return false line ข้างล่างนี้
‫เราจะออกจากฟังก์ชันก่อนเวลาอันควร
‫แต่ถ้าเราไม่อยู่ในระยะ ถ้าเช็คระยะที่นี่ล้มเหลว เราจะไม่ตีค่ากลับเป็นจริง
‫และเราจะไปถึงจุดสิ้นสุดของฟังก์ชันและคืนค่าเท็จ
‫ดังนั้นฟังก์ชันนี้จะคืนค่า true หรือ false โดยขึ้นอยู่กับว่าเราอยู่ในขอบเขตหรือไม่ และเราสามารถใช้ฟังก์ชันนี้แทนการใช้โค้ดซ้ำในสองฟังก์ชันของเรา
‫ตัวอย่างเช่น ข้างบนนี้ เราต้องการเช็คเพียงครั้งเดียวเพื่อดูว่าเราอยู่ในระยะหรือไม่ ก่อนที่เราจะหมุนป้อมปืน
‫สิ่งที่เราทำได้คือเราสามารถพูดได้ว่าถ้าอยู่ในระยะการยิง และถ้าสิ่งนี้เป็นจริง เราอยู่ในระยะการยิง เพื่อที่เราจะได้เรียกป้อมปืนหมุนได้
‫เราจะใส่มันตรงนั้นในคำสั่ง if
‫และตอนนี้โค้ดทั้งหมดนี้ไม่จำเป็น ดังนั้นเราจึงสามารถลบออกได้
‫และตอนนี้ก็ดูสะอาดตากว่าที่เคยมีมามาก
‫แล้วเราก็ลงมาที่นี่เพื่อตรวจสภาพไฟและทำแบบเดียวกันได้
‫แทนที่จะทั้งหมดนี้ เราสามารถตรวจสอบว่าอยู่ในระยะการยิงหรือไม่
‫และถ้าเป็นเช่นนั้น เราก็เรียกไฟได้
‫ตอนนี้เราได้ปรับโครงสร้างโค้ดทั้งหมดเป็นเช็คที่ทำในฟังก์ชันระยะยิงของเราสำเร็จแล้ว
‫ไปข้างหน้าและรวบรวมสิ่งนี้อีกครั้งและลองเล่นทดสอบอย่างรวดเร็วจริง ๆ เพื่อให้แน่ใจว่าทุกอย่างทำงานตามที่คาดไว้
‫ดังนั้นเราจะไปข้างหน้าและตีเล่นและเข้าสู่ระยะยิง
‫และแน่นอน เราอยู่ในระยะการยิง และมันทำงานอย่างถูกต้อง
‫โดยสรุป เราสร้างตัวจับเวลา และทุก 2 วินาทีเราจะเรียกใช้ฟังก์ชันไฟในชั้นหอคอย
‫ตอนนี้เรากำลังตรวจสอบเพื่อดูว่า Tank อยู่ในระยะหรือไม่
‫ดังนั้นเราจึงเรียกใช้ฟังก์ชันการยิงทุก 2 วินาทีเท่านั้นหากรถถังอยู่ภายในระยะการยิง
‫และเรายังเห็นด้วยว่าเราใช้การตรวจสอบระยะทางนั้นในฟังก์ชันสองแบบที่แตกต่างกัน
‫ดังนั้นเราจึงปรับโครงสร้างให้เป็นฟังก์ชันของตัวเอง และเรียกง่ายๆ ว่าเพื่อตรวจสอบเพื่อดูว่าเราอยู่ในระยะหรือไม่
‫ตอนนี้เรามีฟังก์ชั่นไฟที่เรียกว่าชั้นทาวเวอร์
‫สิ่งต่อไปที่ต้องทำคือเริ่มวางไข่ด้วยฟังก์ชันการยิงของเรา
‫เราจะพูดถึงเรื่องนั้นในวิดีโอหน้า
‫เจอกันเร็วๆนี้ครับ