‫สวัสดีและยินดีต้อนรับกลับ
‫ตอนนี้เราได้สร้างรถถังที่สามารถเคลื่อนที่ไปมาและหมุนป้อมปืนได้
‫และตอนนี้เราพร้อมแล้วที่จะสร้างชั้นหอคอยที่สามารถสืบทอดการทำงานบางอย่างที่รถถังสืบทอดมาจากชั้นฐานของพ็อด
‫ตอนนี้ เมื่อเราสร้างคลาสหอคอยแล้ว เราจะแทนที่ฟังก์ชันขีด เพื่อให้เราสามารถหมุนป้อมปืนได้เช่นกัน
‫เป้าหมายของเราคือให้ป้อมปืนหมุนเพื่อจะได้มองมาที่รถถังตลอดเวลา
‫ด้วยวิธีนี้ เมื่อพวกเขาเริ่มยิงขีปนาวุธ พวกเขาจะโดนรถถังในบางครั้ง ตราบใดที่รถถังไม่เคลื่อนที่ออกไปอย่างรวดเร็ว
‫และเราจะคิดด้วยว่าเราจะจับถังได้อย่างไร --
‫ด้วยวิธีนี้ เราสามารถกำหนดเป้าหมายรถถัง -- และหมุนป้อมปืนของหอคอยไปทางรถถัง --
‫เรากำลังเตรียมพร้อมสำหรับการต่อสู้แบบโพรเจกไทล์
‫ดังนั้นฉันอยู่ที่นี่ในบรรณาธิการและฉันจะไปที่โฟลเดอร์ปรับแต่งรถถังที่ฐาน --
‫และชั้นเรียนรถถังอยู่
‫ตอนนี้ ฉันต้องการสร้างคลาสทาวเวอร์โดยอิงจากคลาสพื้นฐาน
‫วิธีที่เราทำสิ่งนี้กับคลาสรถถังคือเราคิดถูก
‫คลิกที่ฐาน -- และเลือกสร้างคลาส C ++ ที่ได้มาจากวิธีอื่นคือไปที่เครื่องมือและเลือกคลาส
‫C ++ ใหม่
‫และจากที่นี่ เราสามารถคลิกแท็บที่ระบุคลาสทั้งหมดและค้นหาฐาน --
‫และที่นี่เราเห็นฐานของเรา -- คลาส
‫ถ้าฉันเลือกสิ่งนี้และคลิกถัดไป ตอนนี้ฉันจะสร้างคลาสใหม่ตามฐาน --
‫ฉันจะปล่อยให้มันอยู่ในเส้นทางเดียวกับคลาส C ++ อื่น ๆ ของเราและฉันจะเรียกหอคอยนี้
‫มาคลิกสร้างชั้นเรียนกันเถอะ
‫นี่คือ Tower Age และ Tower Dot ใหม่ของฉัน
‫CP ตอนนี้ อย่างแรกที่เราต้องมีคือฟังก์ชันติ๊ก เพราะหอคอยต้องการหมุนป้อมปืนให้หันไปทาง
‫--
‫เราจะเขียนทับฟังก์ชันติ๊กตรงนี้
‫ฉันกำลังจะสร้างส่วนสาธารณะใหม่ และเราจะพิมพ์ virtual void tick ซึ่งรับ float ที่เรียกว่า
‫Delta Time และนี่คือการแทนที่
‫ตอนนี้เราจะลงรายละเอียดเพิ่มเติมเกี่ยวกับวิดีโอเสมือนจริงและการแทนที่ในวิดีโอในอนาคต แต่โดยพื้นฐานแล้วเรากำลังใช้ฟังก์ชันติ๊กที่สืบทอดมา
‫และสร้างการใช้งานใหม่สำหรับมัน
‫ลองใช้ฟังก์ชันติ๊กและนำไปใช้ที่นี่ใน Tower CP
‫ตอนนี้เราต้องเติมคำนำหน้าชื่อฟังก์ชันติ๊กด้วยหอคอยและทวิภาคคู่
‫และเช่นเคย เป็นความคิดที่ดีที่จะเรียก super tick และเราจำเป็นต้องผ่านเวลาเดลต้า
‫ตอนนี้สิ่งที่ฉันอยากทำคือหมุนป้อมปืนของรถถังเพื่อให้หอคอยคุกคามรถถังและพร้อมที่จะยิงขีปนาวุธ
‫แต่ฉันต้องการทำสิ่งนี้ก็ต่อเมื่อรถถังอยู่ในระยะ
‫ทีนี้ เพื่อที่จะรู้ว่ารถถังอยู่ในระยะหรือไม่ เราต้องรู้ระยะห่างจากป้อมปืนถึงรถถัง
‫นี่คือกิซโมเล็กๆ น้อยๆ ที่แสดงถึงต้นกำเนิดของโลก
‫กล่าวอีกนัยหนึ่ง จุดในช่องว่างที่ X, Y และ Z เป็นศูนย์
‫เมื่อเราพูดถึงตำแหน่งของนักแสดง เรากำลังพูดถึงเวกเตอร์จากจุดกำเนิดไปยังตำแหน่งนั้น
‫และเราสามารถหาเวกเตอร์ตำแหน่งนั้นได้เสมอโดยใช้ตำแหน่งตัวแสดง ดังนั้นเราจะได้ตำแหน่งของหนึ่งในหอคอยและตำแหน่งของรถถัง
‫และถ้าเราทราบตำแหน่งสองตำแหน่งนั้น เราสามารถคำนวณระยะห่างระหว่างสถานที่ทั้งสองได้
‫ทีนี้ เราทำสิ่งนี้ได้ด้วยคณิตศาสตร์เวกเตอร์ แต่คลาสเวกเตอร์ F มีฟังก์ชันที่เรียกว่า dist และฟังก์ชันนี้ใช้หาเวกเตอร์ที่ตั้ง
‫และสิ่งที่ส่งคืนคือระยะห่างระหว่างพวกมัน
‫ในไฟล์ Tower CP ในฟังก์ชันติ๊ก ฉันจะเขียนโน้ตสองสามตัวเพื่อให้เรารู้ว่าเราควรจะทำอะไร
‫อันดับแรก เราต้องหาระยะห่างของรถถังหลังจากนั้น ตรวจสอบว่ารถถังอยู่ในระยะหรือไม่ และถ้าอยู่ในระยะ
‫ให้หมุนป้อมปืนเข้าหาถัง
‫ดังนั้นเราจึงมีบางอย่างที่ต้องทำที่นี่
‫ทีนี้ ในการหาระยะห่างจากถัง เราต้องจับถัง
‫ตอนนี้ ที่ที่ดีที่จะทำคือใน Begin Play
‫ดังนั้น นอกจากฟังก์ชันติ๊กแล้ว เรามาแทนที่ Begin Play กัน
‫ตอนนี้ให้สังเกตใน Tank H เริ่มเล่นอยู่ในส่วนที่มีการป้องกัน
‫เราจะปกป้องมันไว้ในหอคอยด้วย
‫ดังนั้นเราจะวางส่วนที่ได้รับการคุ้มครองไว้ใต้ส่วนสาธารณะและจะเริ่มเล่นภายใต้เครื่องหมายถูก
‫ไปที่ Tower Dot, CP, ใช้งาน, เริ่มเล่นตามคุณสมบัติของชื่อฟังก์ชัน และอย่างที่คุณอาจเดาได้
‫เรากำลังเรียก Super Begin Play
‫ในการที่จะรับถังและเก็บไว้ในตัวแปร เราจำเป็นต้องมีตัวแปรประเภทถัง
‫เราจะวางมันไว้ตรงนี้ใน Towers H ในส่วนส่วนตัว
‫ทีนี้ นี่จะเป็นรถถัง A เป็นตัวชี้ และเราสามารถเรียกรถถังนี้ได้
‫และเพื่อหลีกเลี่ยงไม่ให้รวม Tank H ไว้ที่นี่ เราสามารถส่งต่อเพื่อประกาศว่าเราได้เห็นแล้วว่าสิ่งนั้นมีความสำคัญเพียงใด
‫ตอนนี้เรามีตัวชี้รถถัง และถ้าเราสามารถหาวิธีเข้าถึงรถถัง เราสามารถเก็บไว้ในตัวชี้รถถังของเราที่นี่
‫และเริ่มเล่น
‫สิ่งแรกที่ฉันจะทำคือใส่ Tank H เพื่อให้เราสามารถใช้ประเภทได้จริง
‫แล้วเราจะเข้าถึงถังได้อย่างไร?
‫นี่คือเอกสาร Unreal Engine สำหรับฟังก์ชั่นที่สะดวกซึ่งเรียกว่า รับจำนำผู้เล่น
‫มันมีอยู่ในสถิติการเล่นเกม
‫เนื่องจากฉันได้เปิดสิ่งนี้ไว้ ฉันจะไปข้างหน้าและคัดลอกการรวมสำหรับสถิติการเล่นเกมและดูไวยากรณ์
‫มันมีสองอินพุตวัตถุบริบทโลก
‫เรารู้วิธีจัดการกับมันและดัชนีผู้เล่นแล้ว
‫และอย่างที่เราเห็นสำหรับเกมผู้เล่นคนเดียวเช่นเรา ดัชนีผู้เล่นจะเป็นศูนย์ผู้เล่นเสมอ และนั่นจะทำให้เราเข้าถึงสัญลักษณ์แทนตัวที่สอดคล้องกับผู้เล่นที่เป็นศูนย์ได้
‫เรียกฟังก์ชันนี้ที่นี่ใน Tower Dot CP
‫ฉันจะใส่สถิตยภาพการเล่นเกมสำหรับคุณ และในการเริ่มเล่น ฉันจะตั้งค่าแท็งก์ให้เท่ากับสแตติกในการเล่นเกมของคุณ
‫รับผู้เล่น - สำหรับวัตถุบริบทโลก
‫ฉันสามารถผ่านในนี้และสำหรับดัชนีผู้เล่นเราสามารถส่งผ่านเป็นศูนย์
‫ตอนนี้ตรวจสอบ squiggly สีแดง
‫มันบอกว่าค่าของประเภทการจำนำไม่สามารถกำหนดให้กับเอนทิตีของรถถังประเภท A ได้
‫นี่เป็นปัญหาเดียวกับที่เราพบเมื่อพยายามโทร รับตัวควบคุม และเก็บผลลัพธ์ไว้ในตัวควบคุมของผู้เล่น
‫A
‫รถถังเป็นลูกของการจำนำ ดังนั้นเราจึงไม่สามารถจัดเก็บประเภทหลักในพอยน์เตอร์ย่อยได้
‫เราต้อง.
‫คุณเดาได้ว่าเราต้องโยน
‫ดังนั้นเราจะนำค่าที่ส่งคืนมาและใส่ไว้ในการเรียกใช้ฟังก์ชัน cast
‫เราจะบอกว่าแคสต์และเรากำลังแคสต์ไปที่แทงค์
‫และสิ่งที่เราส่งให้แคสต์ก็คือการเรียกหาบ่อของผู้เล่น
‫ลองใส่มันตรงนี้ในวงเล็บ
‫และหลังจากร่ายแล้วเราจะสามารถเข้าถึงแทงค์ได้
‫ทีนี้เมื่อเราเข้าถึงถังได้แล้ว เราก็สามารถหาระยะห่างของถังและระยะทางเป็นลูกลอยได้
‫ดังนั้นเราจึงสามารถสร้างตัวแปรโฟลตในพื้นที่ที่เรียกว่าระยะทาง
‫และสิ่งที่เราจะตั้งค่าให้เท่ากันคือผลลัพธ์ของการเรียกฟังก์ชันเวกเตอร์สแตติกของเวกเตอร์ F
‫ตอนนี้ dist รับพารามิเตอร์อินพุตสองตัวของเวกเตอร์ประเภท F
‫ตอนนี้เราต้องการระยะห่างระหว่างจุดสองจุดในอวกาศ
‫หนึ่งคือที่ตั้งของหอคอย
‫เราอยู่ในชั้นทาวเวอร์ ดังนั้นเราจึงสามารถเรียกตำแหน่งนักแสดง และนั่นทำให้เราได้ตำแหน่งของหอคอย
‫แต่ถังล่ะ?
‫เราสามารถเรียกแทงค์ หาตำแหน่งนักแสดง และตอนนี้เราก็มีระยะทางแล้ว
‫ปัญหาเดียวคือ เรากำลังใช้ตัวชี้รถถังโดยไม่ได้ตรวจสอบก่อนเพื่อให้แน่ใจว่าไม่เป็นโมฆะ
‫เราต้องบอกว่าถ้า tank ก่อน เราสามารถเรียกฟังก์ชันนี้แล้วลากมันมาที่นี่ใน
‫if คำสั่ง
‫ดังนั้นหากรถถังนั้นถูกต้อง เราก็สามารถเข้าถึงตำแหน่งของมันได้ด้วยการหาตำแหน่งนักแสดง
‫ยอดเยี่ยม.
‫เนื่องจากเรากำลังดำเนินการใน if statement ฉันจะย้ายความคิดเห็นอื่น ๆ เหล่านี้เข้าไปข้างในเพราะเรารู้ว่าเราไม่สามารถตรวจสอบได้ว่ารถถังอยู่ในระยะหรือไม่
‫ถ้ารถถังยังใช้งานไม่ได้
‫ฉันอยากจะท้าให้คุณหมุนป้อมปืนไปทางรถถัง
‫ตอนนี้ เราต้องการจะทำสิ่งนี้ก็ต่อเมื่อรถถังอยู่ในระยะ เรามีระยะทาง
‫ตอนนี้เราต้องการตัวแปรระยะการยิง
‫ดังนั้นให้สร้างทุ่นที่เรียกว่าระยะไฟในชั้นทาวเวอร์และเปิดเผยสิ่งนี้กับคุณสมบัติของคุณ
‫เราต้องการที่จะสามารถแก้ไขได้จากตัวแก้ไข
‫ตอนนี้คุณกำลังจะตรวจสอบว่ารถถังอยู่ในระยะหรือไม่
‫ถ้าเรียกว่าหมุนป้อมปืนและหมุนป้อมปืนต้องดูที่เป้าหมาย
‫คุณจะผ่านในตำแหน่งรถถัง
‫ดังนั้นหยุดวิดีโอชั่วคราวและใช้พฤติกรรมนี้ทันที
‫ตกลง.
‫ดังนั้นเราจึงต้องการตัวแปรช่วงการยิง
‫ดังนั้นใน Tower H เรามีส่วนส่วนตัว
‫เราจะทำการลอยกระทง
‫ฉันจะเรียกระยะการยิงนี้ และฉันจะเริ่มต้นมันให้มีค่าเท่ากับ
‫300 F
‫แต่เราจะทดลองกับสิ่งนี้เพราะมันจะเป็นทรัพย์สินของคุณ
‫ดังนั้นคุณทรัพย์สิน
‫และเนื่องจากฉันต้องการให้รถถังทั้งหมดมีระยะการยิงเท่ากัน ฉันจะทำให้สิ่งนี้เป็นค่าเริ่มต้นเท่านั้น
‫ด้วยวิธีนี้เราจะแก้ไขได้เฉพาะในพิมพ์เขียวเริ่มต้นเท่านั้น
‫ตอนนี้ถ้าคุณทำการแก้ไขที่ใดก็ได้หรืออาจแก้ไขเฉพาะอินสแตนซ์ก็ไม่เป็นไร
‫มันเป็นเรื่องของการตั้งค่าจริงๆ และเราสามารถเปลี่ยนแปลงได้ในภายหลัง
‫ฉันจะให้หมวดหมู่นี้ด้วยและฉันจะเรียกหมวดหมู่นี้ว่าการต่อสู้
‫ไปที่ Tower CP และเรามีประเด็นต่อไปที่นี่
‫ตรวจสอบเพื่อดูว่ารถถังอยู่ในระยะหรือไม่ ซึ่งหมายความว่าเราต้องตรวจสอบดูว่าระยะทางน้อยกว่าหรือเท่ากับระยะการยิงหรือไม่
‫เรามีค่าน้อยกว่าหรือเท่ากับและไม่ใช่แค่เท่ากับ เพราะจากเฟรมหนึ่งไปอีกเฟรมหนึ่ง
‫ระยะทางอาจมากกว่าระยะการยิง หนึ่งเฟรม และน้อยกว่าระยะการยิง เฟรมถัดไปผ่านระยะการยิงอย่างสมบูรณ์
‫ดังนั้นมันจึงอาจไม่เท่ากับระยะการยิงอย่างแน่นอน
‫ในความเป็นจริง ด้วยค่าทศนิยม ทศนิยมสองทศนิยมเท่ากันนั้นค่อนข้างหายาก
‫ดังนั้นเราจึงมีสิ่งนี้หากตรวจสอบและถ้าเราเข้าไปข้างในนั่นหมายถึงระยะทางน้อยกว่าหรือเท่ากับระยะการยิง
‫รถถังอยู่ในระยะ ซึ่งหมายความว่าความคิดเห็นนี้สามารถเคลื่อนย้ายได้ที่นั่น
‫ทีนี้ ถ้าอยู่ในระยะ ให้หมุนป้อมปืนไปทางถัง นั่นหมายความว่าเราจะเรียกฟังก์ชันการหมุนของป้อมปืน
‫นั่นคือฟังก์ชันที่ได้รับการป้องกันซึ่งเราใส่ไว้ในพ็อดฐาน
‫ตอนนี้ป้อมปืนหมุนจะตรวจสอบเป้าหมายและเราต้องการตำแหน่งของรถถัง
‫นั่นจะเป็นแทงค์รับตำแหน่งนักแสดง
‫และด้วยเหตุนี้ เรากำลังเรียกป้อมปืนหมุนเฉพาะเมื่อรถถังอยู่ในระยะ
‫ลองรวบรวมสิ่งนี้และดูว่ามันทำงานอย่างไร
‫ดังนั้นเราจึงกลับมาที่นี่ในเครื่องมือแก้ไข และสิ่งที่เราต้องทำคือเข้าไปในพิมพ์เขียว เบี้ย และค้นหาป้อมปืนจำนำ
‫BP และเปิดโปรแกรมแก้ไขพิมพ์เขียวฉบับสมบูรณ์
‫ที่ด้านบนขวา เราจะเห็นการจำนำของคลาสพาเรนต์ แต่เราต้องการให้คลาสพาเรนต์เป็นหอคอย เพื่อที่เราจะได้ไปที่การตั้งค่าคลาส
‫คลาสพาเรนต์ และค้นหาหอคอยและเลือกมัน
‫ตอนนี้ป้อมปืนจำนำของเราขึ้นอยู่กับประเภทหอคอย
‫ตอนนี้เรามาดูกันว่าจะเกิดอะไรขึ้นเมื่อเรากดปุ่มเล่น
‫โอเค ฉันจะย้ายถังไปรอบๆ
‫เราไม่ได้อยู่ในระยะ ดังนั้นเราจึงไม่เห็นการเคลื่อนไหวใด ๆ จากหอคอย
‫แต่ถ้าผมเข้าข่าย ดูนั่นสิ
‫ตอนนี้พวกเขากำลังตามฉันมา และมันก็ดูค่อนข้างอันตราย
‫ตอนนี้ 300 ยูนิตอยู่ไม่ไกล
‫สิ่งที่ฉันต้องการจะทำคือแก้ไขระยะทางนั้น
‫จากที่นี่ใน BP Pawn Turret ฉันจะเลือก BP Pond Turret ด้วยตัวเอง
‫และนี่คือส่วนการต่อสู้
‫ฉันจะไปข้างหน้าและตั้งค่านี้เป็นประมาณ 700
‫ทีนี้ ถ้าฉันตีเล่น ฉันจะเห็นว่าพวกมันจะไม่หมุนในขณะที่ฉันย้ายกลับมาที่นี่
‫แต่ทันทีที่ฉันเข้าไปในพื้นที่ ตอนนี้พวกเขากำลังมองมาที่ฉัน
‫สมบูรณ์แบบ.
‫โดยสรุป เราได้สร้างชั้นทาวเวอร์
‫ตอนนี้เรามีศัตรูสำหรับรถถังแล้ว
‫นอกจากนี้เรายังหมุนป้อมปืนของหอคอยไปทางรถถังในฟังก์ชั่นติ๊ก และเราจะทำเช่นนั้นก็ต่อเมื่อรถถังอยู่ในระยะยิง
‫นอกจากนี้เรายังเปิดเผยตัวแปรระยะการยิงเพื่อให้สามารถปรับเปลี่ยนได้ในแบบพิมพ์เขียว
‫เราเกือบจะพร้อมแล้วสำหรับการต่อสู้
‫เราจะเริ่มตั้งค่านั้นในวิดีโอหน้า
‫เจอกันเร็วๆนี้ครับ