‫สวัสดีและยินดีต้อนรับกลับ
‫ตอนนี้เราพร้อมที่จะหมุนป้อมปืนแล้ว และเราต้องการทำสิ่งนี้โดยใช้เมาส์
‫และตำแหน่ง Hit นั้นจากการติดตามที่เราได้ทำในวิดีโอที่แล้ว
‫ขณะที่ฉันเลื่อนเคอร์เซอร์ของเมาส์ ป้อมปืนจะหมุนและหันไปทางเคอร์เซอร์ของเมาส์
‫และแม้เมื่อฉันคลิกในวิวพอร์ตและเริ่มเล่น ฉันยังคงสามารถเลื่อนเคอร์เซอร์ของเมาส์ไปรอบๆ
‫เพื่อหมุนป้อมปืนและกำหนดทิศทางได้
‫สิ่งนี้จะทำให้ฉันสามารถเล็งได้เมื่อฉันมีความสามารถในการยิงขีปนาวุธ
‫ตกลง.
‫เพื่อให้บรรลุสิ่งนี้ เราต้องหาทิศทางที่เราต้องการให้ป้อมปืนชี้ไป
‫และเมื่อเราพบทิศทางนั้นแล้ว เราก็สามารถตั้งค่าการหมุนตาข่ายของป้อมปืนได้
‫ทีนี้ เพื่อให้ได้ทิศทางที่เราต้องการให้ป้อมปืนชี้ไป เราจำเป็นต้องคำนวณเวกเตอร์เล็กน้อย
‫สิ่งที่เรากำลังมองหาคือเวกเตอร์จากป้อมปืนของรถถังไปยังตำแหน่งที่ตีตามรอยของเรา
‫ตอนนี้ เราสามารถหาตำแหน่งของรถถังของเราหรือส่วนประกอบใดๆ ของมันได้อย่างง่ายดาย เช่น ตำแหน่งของป้อมปืนของรถถัง
‫เราจะเรียกตำแหน่งนี้ว่า ป้อมปืน ตำแหน่ง
‫และเรารู้ด้วยว่าเราจะหาตำแหน่งของหัวติดตามได้อย่างไร
‫เราจะเรียกตำแหน่งการติดตามนี้
‫สิ่งที่เราสนใจคือเวกเตอร์จากตำแหน่งป้อมปืนไปยังตำแหน่งที่ตี
‫เราจะเรียกเวกเตอร์นี้เพื่อกำหนดเป้าหมาย
‫ตอนนี้คณิตศาสตร์เวกเตอร์เพื่อให้ได้เป้าหมายนั้นค่อนข้างง่าย
‫ในการรับเวกเตอร์จากจุดเริ่มต้นไปยังจุดสิ้นสุด จะเป็นจุดสิ้นสุดลบด้วยจุดเริ่มต้นเสมอ
‫ดังนั้นหากเราหาร่องรอย ตีตำแหน่ง และลบตำแหน่งเวกเตอร์ของป้อมปืน เวกเตอร์ที่เป็นผลจากสิ่งนี้จะกำหนดเป้าหมาย
‫ตอนนี้ เมื่อเรามีเวกเตอร์ทิศทางเป้าหมายสองทิศทางแล้ว เราต้องการแปลงเป็นการหมุน เพื่อให้เราสามารถตั้งค่าการหมุนของป้อมปืนของรถถังได้
‫และประเภทเวกเตอร์มีฟังก์ชันที่เรียกว่าการหมุน
‫ดังนั้นถ้าเราเอาเวกเตอร์เป้าหมายของเราและเรียกการหมุนบนมัน มันจะคืนค่า F rotator ที่สอดคล้องกับทิศทางนั้น
‫ตอนนี้เราต้องจำบางอย่างไว้
‫ผลการตีตามรอยมักจะอยู่บนพื้น และเวกเตอร์จากป้อมปืนรถถังไปยังผลการตีตามรอยจะไม่ขนานกับพื้น
‫ซึ่งหมายความว่าถ้าเราตั้งค่าการหมุนป้อมปืนของรถถังไปที่ตัวหมุนที่เราได้รับจากเวกเตอร์ทิศทางนั้น
‫เราอาจได้สิ่งนี้โดยที่ป้อมปืนทำมุมลงไปที่พื้น แต่เราไม่ต้องการให้ป้อมปืนของรถถังหมุนลงด้านล่าง
‫เราต้องการให้มันยังคงชี้ไปข้างหน้า
‫นี่คือผลลัพธ์ที่เราต้องการ
‫กล่าวอีกนัยหนึ่ง เราเพียงต้องการเปลี่ยนส่วนประกอบ ใช่ ของการหมุนป้อมปืนของรถถัง
‫ดังนั้นมันจึงชี้ไปในทิศทางที่ถูกต้องแต่ยังคงขนานกับพื้น
‫เราแค่เปลี่ยนการหันเหของมัน ดังนั้น กลับไปที่รหัส VS และสร้างฟังก์ชันสำหรับการหมุนป้อมปืนของรถถัง
‫ตอนนี้เรากำลังจะหมุนป้อมปืนบนรถถัง แต่เราต้องการหมุนป้อมปืนบนป้อมศัตรูของเราด้วย
‫และในไม่ช้าหอคอยจะถูกสร้างขึ้นมาจากฐานปอน ซึ่งหมายความว่าถ้าเราสร้างป้อมปืนที่หมุนได้ ฟังก์ชั่นเราสามารถวางไว้ที่นี่ในคลาสปิงปองฐาน
‫ด้วยวิธีนี้ทั้งรถถังและหอคอยจะสืบทอดฟังก์ชันนี้
‫เนื่องจากเราวางแผนที่จะใช้งานทั้งในหอคอยและในถัง เราจึงสามารถป้องกันฟังก์ชันนี้ได้
‫ดังนั้นฉันจะเพิ่มส่วนที่ได้รับการป้องกันและฟังก์ชันและตัวแปรที่เราวางไว้ในส่วนที่ได้รับการป้องกันจะสามารถเข้าถึงได้ในคลาสย่อยเหล่านี้
‫แต่ไม่ใช่ในคลาสอื่น
‫ดังนั้นจึงเกือบจะจำกัดเป็นตัวแปรส่วนตัว
‫ตอนนี้ฟังก์ชันนี้สามารถคืนค่าเป็นโมฆะได้
‫ฉันจะเรียกป้อมปืนหมุนนี้
‫และเพื่อจะหมุนป้อมปืนได้ ฉันจะต้องมีจุดหมายที่จะดู
‫นี่อาจเป็นเวกเตอร์ f และเราเรียกสิ่งนี้ว่าการมองที่เป้าหมายได้
‫แนวคิดก็คือถ้าเรามีฟังก์ชันที่สามารถส่งผ่านในตำแหน่งใดที่หนึ่งในโลกได้ ฟังก์ชันนี้ก็จะส่งผลให้ป้อมปืนหมุนไปยังตำแหน่งนั้นได้
‫ไปข้างหน้าและให้คำจำกัดความของฟังก์ชันสำหรับป้อมปืนหมุน
‫ดังนั้นใน CP เบี้ยฐาน ใต้คอนสตรัคเตอร์ ฉันจะใช้ป้อมปืนหมุน
‫และแน่นอนว่าฉันต้องการชื่อคลาสตัวรับจำนำพื้นฐานพร้อมตัวดำเนินการแก้ไขขอบเขตที่นี่
‫ตอนนี้ฉันมีป้อมปืนหมุนแล้ว ลองคิดดูว่าเราจะใช้งานมันอย่างไร
‫สิ่งแรกที่เราต้องการคือการกำหนดเป้าหมายเวกเตอร์เวกเตอร์จากส่วนประกอบป้อมปืนไปยังผลลัพธ์การติดตามภายใต้เคอร์เซอร์ของเมาส์
‫นี่อาจเป็นเวกเตอร์ F ในพื้นที่ที่เรียกไปยังเป้าหมาย และเราจะกำหนดให้มันเท่ากับผลลัพธ์ของคณิตศาสตร์เวกเตอร์
‫จำไว้ว่ามันจะเป็นปลายทางลบจุดเริ่มต้น
‫และปลายทางจะดูที่เป้าหมายและจุดเริ่มต้นจะเป็นตำแหน่งของป้อมปืนของรถถัง กล่าวคือ
‫ตำแหน่งของตาข่ายป้อมปืน
‫เราสามารถพูดได้ว่า turret mesh และเราสามารถหาตำแหน่งของ mesh turret ได้
‫ตอนนี้วิธีรับตำแหน่งโลกของส่วนประกอบด้วยฟังก์ชันนี้ รับตำแหน่งส่วนประกอบ
‫เป็นของคลาสคอมโพเนนต์ฉากใช้
‫ดังนั้นองค์ประกอบฉากทั้งหมดจึงมี
‫ดังนั้นจากตาข่ายป้อมปืน เราจะเรียกตำแหน่งที่ได้รับส่วนประกอบ
‫ลองดูที่เป้าหมายลบตำแหน่งตาข่ายของป้อมปืนให้เวกเตอร์จากตาข่ายของป้อมปืนไปยังเป้าหมายที่ระวัง
‫ดังที่ฉันได้กล่าวไปแล้ว เราสามารถรับตัวหมุน EF จากเป้าหมายโดยใช้ฟังก์ชันการหมุนเวกเตอร์ F
‫เราจะสร้างตัวหมุน F และเราสามารถเรียกสิ่งนี้ว่าการหมุน และเราจะตั้งค่าให้เท่ากับการหมุนจุดเป้าหมาย
‫นั่นคือการเรียกใช้ฟังก์ชัน
‫ตอนนี้เรามีตัวหมุนที่สอดคล้องกับสิ่งนี้กับเวกเตอร์ทิศทางเป้าหมาย
‫แต่ประเด็นคือเราสนใจแต่ YA เท่านั้น
‫เราไม่ต้องการที่จะเปลี่ยนสนามหรือบทบาท
‫เราเพียงต้องการหมุนป้อมปืนรอบแกน z และให้ขนานกับพื้น
‫ตอนนี้เราสามารถทำได้หลายวิธี
‫อย่างแรก เราสามารถดูที่การหมุน ระยะพิทช์ และศูนย์นั้นได้
‫กล่าวอีกนัยหนึ่ง ตั้งค่าให้เท่ากับศูนย์
‫นอกจากนี้เรายังสามารถดูบทบาทการหมุนจุดและเป็นศูนย์ได้เช่นกัน
‫หลังจากที่เราตั้งค่า pitch และ roll เป็นศูนย์ เราก็มีการหมุนที่ต้องการ ซึ่งเป็นส่วนประกอบเท่านั้น
‫นี่เป็นวิธีหนึ่งที่จะทำ
‫อีกอย่างคือการใช้ตัวสร้าง F rotator โอเวอร์โหลดตัวใดตัวหนึ่ง
‫ถ้าเราบอกว่า f rotator ด้วยวงเล็บและส่งผ่านในค่าบางอย่างเช่นจุดศูนย์ F สำหรับอันแรกและป๊อปอัปกำลังบอกฉันว่าอินพุตแรกนั้นเป็นระดับเสียง
‫จากนั้นสำหรับ ya เราสามารถใช้เพื่อกำหนดเป้าหมายการหมุน
‫ใช่.
‫และสำหรับบทบาทนี้ เราสามารถใช้ศูนย์จุด F
‫ตอนนี้สิ่งที่ทำคือสร้าง F rotator ใหม่โดยมีค่าศูนย์สำหรับ pitch, ศูนย์สำหรับบทบาทและส่วนประกอบของ
‫rotator ที่ส่งคืนโดยการหมุนเป้าหมายสองครั้ง
‫ค่าที่ส่งคืนโดยสิ่งนี้จะให้ผลลัพธ์เดียวกันกับที่เราทำกับสามบรรทัดนี้
‫เนื่องจากมันดูกะทัดรัดและสวยงามขึ้นเล็กน้อย ฉันคิดว่าฉันควรใช้สิ่งนี้เพื่อให้เราสามารถเริ่มต้นการดูเวกเตอร์การหมุนด้วย
‫F rotator ที่ส่งคืนโดยเรียกตัวสร้าง F rotator แบบนี้
‫ผมจะลบบรรทัดนี้ลงตรงนี้
‫และตอนนี้เรามาดูการหมุน
‫ตอนนี้ สิ่งสุดท้ายที่ต้องทำในฟังก์ชันนี้คือการตั้งค่าการหมุนสำหรับ mash ของป้อมปืน
‫ตอนนี้ เราสามารถตั้งค่าการหมุนสำหรับส่วนประกอบที่กำหนดโดยใช้ฟังก์ชันนี้ ตั้งค่าการหมุนของโลกอีกครั้ง มันเป็นของการใช้ส่วนประกอบฉาก
‫และเหตุผลที่เราใช้การหมุนคำที่กำหนดแทนที่จะเพิ่มออฟเซ็ตการหมุนในเครื่องก็เพราะเรามีการหมุนในเป้าหมายโลกอวกาศที่สองคือเวกเตอร์ทิศทางอวกาศโลก
‫เรากำลังนำตำแหน่งตาข่ายของป้อมปืนในอวกาศโลกและลบตำแหน่งเป้าหมายในอวกาศโลก
‫นี่คือทิศทางของอวกาศของโลก
‫ดังนั้นการดูการหมุนก็คือการหมุนของอวกาศโลก
‫เราจะใช้การตั้งค่าการหมุนของโลกบนตาข่ายของป้อมปืน
‫เราจะบอกว่าตาข่ายป้อมปืน ตั้งค่าการหมุนของโลก และเราจะพิจารณาการหมุน
‫ดังนั้น ตอนนี้ เรามีฟังก์ชันที่สามารถจับเป้าหมายใดๆ ในโลกแล้วหมุนตาข่ายของป้อมปืนเพื่อดูมัน
‫แต่มันจะไม่หมุนตาข่ายลงด้านล่าง
‫มันก็แค่เปลี่ยนการหันเหของมัน ดังนั้นมันจะหมุนในลักษณะที่ป้อมปืนของรถถังจะหมุน
‫ตอนนี้เรามีฟังก์ชั่นหมุนป้อมปืน
‫ฉันจะขอท้าให้คุณเรียกใช้ฟังก์ชันนี้เพื่อตั้งค่าการหมุนของป้อมปืน เรียกฟังก์ชันการหมุนของป้อมปืนในประเภทรถถัง
‫นี่คือฟังก์ชันที่ได้รับการป้องกัน
‫ดังนั้นระดับรถถังจึงสามารถเข้าถึงได้
‫ตอนนี้ป้อมปืนหมุนได้เวกเตอร์ F ดูที่เป้าหมาย คุณจะใช้จุดกระทบนั้นในผลการตี
‫F จากการติดตามเส้นของเรา
‫ฉันจะปล่อยให้คุณค้นหาตำแหน่งที่ถูกต้องในโค้ดเพื่อเรียกใช้ฟังก์ชันนี้
‫ดังนั้นหยุดวิดีโอชั่วคราวและวางฟังก์ชั่นหมุนป้อมปืน
‫โทรในชั้นถัง
‫ตกลง.
‫ดังนั้นเราจึงมีฟังก์ชั่นการหมุนของป้อมปืน และเราพร้อมที่จะเรียกมันว่า
‫ฉันจะไปที่แทงค์และนี่คือฟังก์ชันติ๊กของฉันภายใน if check for player controller ref.
‫ฉันมีผลลัพธ์ของ Hit และหลังจากที่เรียกผลลัพธ์ที่ได้รับภายใต้เคอร์เซอร์แล้ว ผลลัพธ์ของ Hit จะมีข้อมูลที่ถูกต้อง
‫ที่จริงแล้ว เรากำลังใช้จุดกระทบต่อผลลัพธ์ของการโจมตีและวาดทรงกลมดีบั๊ก
‫ตอนนี้เนื่องจากฉันไม่ต้องการวาด debug sphere อีกต่อไป ฉันจะดำเนินการต่อและลบมัน
‫และฉันจะเรียกฟังก์ชันป้องกันของเราหมุนป้อมปืนแทน
‫และสำหรับการดูเป้าหมาย ฉันจะผ่านจุดกระทบจุดกระทบผลลัพธ์
‫ดังนั้นตอนนี้ทุกเฟรม เราจะหมุนป้อมปืนไปยังจุดกระทบนั้นจากผลการตีของเรา
‫ก่อนที่ฉันจะคอมไพล์สิ่งนี้ ฉันไม่ได้ใช้ตัวช่วยดีบักการวาดอีกต่อไป ดังนั้นฉันจะดำเนินการต่อและลบไฟล์ส่วนหัวนั้น
‫ตกลง.
‫ตอนนี้ฉันพร้อมที่จะรวบรวม
‫ตกลง.
‫ฉันกลับมาที่นี่ในบรรณาธิการ
‫ลองไปกดเล่นและลองดู
‫มันอัศจรรย์มาก.
‫ฉันยังคงกลิ้งไปมาได้
‫ฉันสามารถขยับเมาส์และป้อมปืนหมุนได้ทุกที่ที่ฉันเลื่อนเคอร์เซอร์ของเมาส์
‫ดังนั้นนี่จึงเป็นสิ่งที่ยอดเยี่ยม
‫โอเค ก่อนที่เราจะสรุปเรื่องนี้ ฉันขอพูดถึงสองสามประเด็นก่อน
‫ฉันต้องการให้มันดูดีและสวยงาม
‫ตอนนี้ ปัญหาแรกเกิดขึ้นเมื่อฉันเลื่อนเคอร์เซอร์ของเมาส์ไปใกล้กับศูนย์กลางของรถถังแล้วผ่านมันไป
‫คุณจะเห็นว่าในบางจุดการหมุนจะหมุนเร็วมาก
‫และถ้าเราเลื่อนเมาส์ไปมาในลักษณะจับจด นั่นก็ดูไม่ดีนัก
‫มันหัก.
‫เราไม่มีการเคลื่อนไหวที่ราบรื่น
‫นั่นเป็นประเด็นหนึ่ง
‫อีกปัญหาหนึ่งคือ ถ้าฉันคลิกแล้วหมุนไปรอบๆ และขึ้นไปที่ขอบ ฉันจะเห็นว่าป้อมปืนของฉันหักไปในทิศทางอื่นเมื่อฉันเลื่อนเคอร์เซอร์ของเมาส์ขึ้น
‫เกิดอะไรขึ้นที่นั่น?
‫มาดูกันดีกว่า
‫เราจะกลับไปที่ VS Code และฉันต้องการนำ debug sphere กลับมา
‫กลับมาที่ Tank ฉันจะไปที่ฟังก์ชันติ๊กก่อนหมุนป้อมปืน และอีกครั้งฉันจะเรียก
‫Draw debug sphere อีกครั้ง
‫ตอนนี้สำหรับโลกที่ฉันกำลังผ่านเข้ามา รับโลกสำหรับจุดศูนย์กลาง ฉันกำลังผ่านจุดกระทบจุดกระทบจุดสำหรับรัศมี
‫ฉันจะใช้ส่วน 25 จุด F ได้ 12 สีสามารถเป็น F สี เส้นสีแดงถาวรอาจเป็นเท็จ และอายุการใช้งานสามารถเป็นค่าลบได้
‫สิ่งเดียวกันกับที่เราทำก่อนหน้านี้
‫ผมจะบันทึกประกาศนี้ไว้
‫ฉันไม่ได้เพิ่มไฟล์ส่วนหัวสำรองไว้ที่นั่น และนั่นเป็นเพราะว่าตัวช่วยดีบั๊กถูกรวมไว้โดยค่าเริ่มต้น ดังนั้นเราจึงไม่ต้องการมันในทางเทคนิค
‫ฉันแค่จะบันทึกการกระโดดกลับไปในโปรแกรมแก้ไข เริ่มต้นการเขียนโค้ดแบบสดแล้วกดเล่น
‫ตอนนี้ฉันมีทรงกลมดีบักของฉันแล้ว
‫ไปให้สุดขอบโลก และฉันจะเลื่อนเคอร์เซอร์ของเมาส์ไปที่จุดที่มันตกลงสู่ก้นบึ้ง
‫และนั่นคือสิ่งที่เรามีปัญหา
‫คุณเห็นไหม เราไม่มีผลการตีภายใต้เคอร์เซอร์เมื่อเคอร์เซอร์ของเราเลื่อนขึ้นที่นั่นเพราะไม่มีอะไรให้เราได้ผลลัพธ์จากการโจมตี
‫ดังนั้นจึงไม่มีการกำหนดจุดกระทบของเรา
‫สิ่งที่เราต้องมีก็คือบางอย่างสำหรับการติดตามเส้นนั้น
‫ตอนนี้ Unreal Engine มีเครื่องมือมากมายที่เราสามารถใช้ได้
‫สิ่งที่ฉันจะทำคือคลิกดรอปดาวน์บนนี้ แล้วเปิดแผงตัวแสดงสถานที่ของฉัน และเลือกไอคอนนี้ที่ระบุว่าไดรฟ์ข้อมูลและได้รับบล็อกวอลลุ่ม
‫นี่คือการปิดกั้นระดับเสียง
‫ฉันจะลากมันเข้าไป
‫ตอนนี้ฉันมีบล็อควอลลุ่มนี้แล้ว
‫ตามค่าเริ่มต้น การบล็อกวอลลุมควรจะมองไม่เห็น
‫ถ้าฉันไปที่แผงรายละเอียดสำหรับสิ่งนี้และเลื่อนลงไปที่การชนกัน ฉันเห็นว่ามันคือ
‫Collision Presets is Invisible Wall ซึ่งดูเหมือนว่าจะแนะนำว่าควรบล็อกเกือบทุกอย่าง
‫สิ่งเดียวที่ไม่ได้ปิดกั้นคือช่องทางการมองเห็นและการติดตามสายของเราเกิดขึ้นกับการติดตามช่องทางการมองเห็น
‫สิ่งใดก็ตามในโลกของเราที่ปิดกั้นช่องทางการมองเห็นจะถูกติดตามโดยการติดตามสายของเรา
‫แต่ปริมาณเฉพาะนี้จะไม่
‫มันควรจะมองไม่เห็น
‫เราสามารถไปที่ค่าที่ตั้งไว้ของการชนกัน เปิดเมนูแบบเลื่อนลงและเลือกกำหนดเอง
‫สิ่งนี้จะทำให้เราสามารถเปลี่ยนแปลงสิ่งนั้นได้ เพื่อให้สามารถตั้งค่าการตอบสนองการชนไปยังช่องทางการมองเห็นได้
‫มันเป็นบล็อก
‫ดังนั้นตอนนี้ฉันมีวอลลุ่มล่องหน แต่มันถูกตั้งค่าให้บล็อกช่องการมองเห็น ซึ่งหมายความว่าการตามรอยเส้นที่ติดตามกับช่องทางการมองเห็นอย่างของเรากำลังจะชนมัน
‫สิ่งที่ฉันทำได้คือนำวอลลุ่มการบล็อคนี้มาขยายขนาด
‫ฉันจะวางมันไว้เหนือกำแพง
‫อันที่จริง ฉันสามารถวางมันไว้ตรงนี้ที่ขอบกำแพง และฉันจะลดมันลงมาเล็กน้อยเพื่อให้มันทับซ้อนกันกับผนัง
‫และด้วยวิธีนั้น เรามีบาเรียที่มองไม่เห็นตรงนี้ และฉันจะขยายมันให้ใหญ่ขึ้นในทิศทาง
‫Y เช่นกัน
‫ผมจะจัดวางให้ใหญ่และสวยงาม แล้ววางมันไว้ตรงกลางตรงนี้ และเติมช่องว่างภายในเล็กน้อย
‫และผมจะขยายมันให้ใหญ่ขึ้นในทิศทาง Z ด้วย
‫ตอนนี้มันดีและใหญ่แล้ว และเส้นของเราน่าจะชนมัน
‫ลองทดสอบทฤษฎีนั้นกัน
‫คลิกที่วิวพอร์ตแล้วขึ้นไปที่กำแพงกัน
‫และแน่นอนว่า ฉันกำลังบล็อกวอลลุ่มนั้นด้วยการติดตามเส้นของฉัน และฉันก็ไม่มีปัญหาที่ป้อมปืนของฉันจะล็อคเพื่อดูตำแหน่งที่ไม่ได้กำหนดไว้
‫มันอาจจะมองไปที่จุดกำเนิดของโลกเพราะเวกเตอร์จุดกระทบนั้นเป็นศูนย์ทั้งหมด
‫ตอนนี้ถ้าฉันขึ้นไปบนกำแพงนี้ ฉันมีปัญหาเดียวกัน
‫ดังนั้นเราจึงต้องการบล็อควอลลุมเหล่านี้
‫ทั่วปริมณฑลของระดับของเรา
‫ตอนนี้มันค่อนข้างง่าย
‫ทั้งหมดที่ฉันต้องทำคือทำซ้ำวอลลุ่มการบล็อกนี้
‫ตอนนี้ฉันเปลี่ยนจากมุมมองเปอร์สเปคทีฟเป็นมุมมองออร์โธกราฟิกด้านบนได้แล้ว
‫ดังนั้นฉันจะเลือกด้านบนและเลื่อนเมาส์ออกไปแล้วกด alt และทำสำเนากำแพงนี้แล้ววางอันหนึ่งไว้ตรงนี้
‫และฉันสามารถกด E เพื่อเข้าสู่โหมดหมุนได้
‫ผมจะกด Alt ค้างไว้แล้วหมุนไป 90 องศา
‫นั่นจะให้สำเนากับฉัน จากนั้นฉันจะกด double u และทำให้โหมดการแปลของฉันทำงาน และฉันจะย้ายมันขึ้นไปที่ด้านนี้และกด
‫Alt ค้างไว้แล้วลากสำเนาลงไปที่ด้านนั้น
‫ตอนนี้เรามีสี่กำแพง
‫ตอนนี้ฉันสามารถเปลี่ยนจากมุมมองด้านบนกลับไปเป็นเปอร์สเป็คทีฟและกดเล่น และตอนนี้ฉันสามารถขึ้นไปบนกำแพงใดก็ได้
‫และไม่ว่าฉันจะปิดกำแพงไหน มันจึงดูดี
‫เพื่อดูแลหนึ่งในปัญหาของเรา
‫แต่อีกอันหนึ่งนี้ล่ะ?
‫หากเราเลื่อนเมาส์ไปใกล้ๆ กับรถถัง เราก็ยังคงมีพฤติกรรมแบบนี้อยู่เป็นระยะๆ
‫ฉันก็เลยอยากดูแลมันเหมือนกัน
‫ทีนี้ วิธีที่ฉันจัดการได้คือ สอดแทรกการหมุนนั้น
‫ดังนั้น แทนที่จะตั้งค่าการหมุนนี้โดยตรง เราสามารถใช้ฟังก์ชันการแก้ไขซึ่งจะย้ายการหมุนนั้นไปยังเป้าหมายที่เราจัดเตรียมไว้อย่างราบรื่น
‫เรามาดูกันว่ามันทำงานอย่างไร
‫ตอนนี้ ฉันต้องการให้การแก้ไขนี้อยู่ในฟังก์ชันการหมุนของป้อมปืน เพื่อให้เราสามารถกลับไปที่ฐานจำนำลงเพื่อหมุนป้อมปืน
‫และแทนที่จะตั้งค่าการหมุนของโลกเพื่อให้ป้อมปืนดูการหมุน เราสามารถตั้งค่าให้เท่ากับ ค่าที่ส่งคืนโดยฟังก์ชันการแก้ไข
‫ผมจะลบ ดูที่การหมุน แล้วเราจะเรียกฟังก์ชันในไลบรารีคณิตศาสตร์
‫F ที่เรียกว่า R inter two แทน
‫ตอนนี้ในสองของเราได้รับการออกแบบมาเพื่อจัดการกับการแก้ไขสำหรับโรเตเตอร์
‫ตอนนี้พารามิเตอร์อินพุตแรกคือการอ้างอิงตัวหมุน const F ที่เรียกว่ากระแส
‫นั่นคือมูลค่าปัจจุบันของสิ่งที่เราพยายามจะเปลี่ยน
‫สิ่งที่เราพยายามจะเปลี่ยนคือการหมุนของป้อมปืน และเราได้จากตาข่ายของป้อมปืน
‫เราจะบอกว่า turret mesh และฟังก์ชันที่เราต้องการใช้คือการหมุนส่วนประกอบ
‫ดังนั้นมันจึงเหมือนกับรับตำแหน่งส่วนประกอบเท่านั้นที่จะได้รับการหมุน
‫ตอนนี้อินพุตถัดไปคือตัวหมุน F ที่เรียกว่า Target
‫นั่นคือคุณค่า
‫เราต้องการให้การหมุนของตาข่ายป้อมปืนตีความว่าเข้าใกล้อย่างราบรื่น
‫นั่นคือการดูการหมุนของเรา
‫ผมเลยจะบอกว่าดูที่การหมุน
‫อินพุตถัดไปคือเวลาเดลต้า
‫เราจึงทราบถึงความสำคัญของเวลาเดลต้า
‫หากเรากำลังเคลื่อนย้ายสิ่งของหรือสิ่งของที่หมุนอยู่ เราต้องการให้การเคลื่อนไหวนั้นไม่ขึ้นกับอัตราเฟรม
‫ดังนั้นเราจึงสามารถหาเวลาเดลต้าได้
‫ฉันสามารถรวมสถิตการเล่นเกมและถ้าคุณมีหน่วยความจำที่ดี คุณจะจำได้ว่ารวมคือ
‫kismet สแลชเพลย์สเตติก
‫ดังนั้นฉันจะเอาสถิติการเล่นเกมมาไว้ที่นี่ เพื่อที่ฉันจะได้เข้าถึงฟังก์ชันสแตติก รับวินาทีเดลต้าโลก และจำไว้ว่าสิ่งนี้ต้องใช้ออบเจกต์บริบทโลก
‫ดังนั้นฉันจะส่งสิ่งนี้เข้าไป
‫และสุดท้าย เราต้องการความเร็วภายใน
‫ยิ่งค่าความเร็วภายในสูงเท่าไหร่ เราจะยิ่งสอดแทรกไปยังเป้าหมายเร็วขึ้นเท่านั้น
‫ดังนั้นหากผมตั้งค่านี้เป็นค่าว่า 5 F แล้วเราจะสอดแทรกค่อนข้างช้า
‫เรามาดูกันว่าตอนนี้มีลักษณะอย่างไร
‫ทั้งหมดนี้อยู่ในบรรทัดเดียวและวิ่งออกจากหน้าจอ
‫สิ่งที่ฉันจะทำคือวางอินพุตเพื่อตั้งค่าการหมุนของโลกตามบรรทัดของมันเองแบบนี้
‫แค่นั้นเอง
‫จากนั้นล่ามของเราซึ่งมีพารามิเตอร์อินพุตสี่ตัวนี้ก็วิ่งออกจากหน้าจอเช่นกัน
‫ผมจะจัดพวกมันให้อยู่ในแนวเดียวกัน
‫ด้วยวิธีนี้เราจะสามารถเห็นอินพุตทั้งหมดโดยไม่ต้องเลื่อนออกจากหน้าจอแบบนั้น
‫ไม่เป็นไร.
‫ฉันจะดำเนินการต่อและบันทึกสิ่งนั้นและเริ่มต้นการเข้ารหัสแบบสด
‫และตอนนี้ถ้าฉันกดเล่นและเลื่อนเมาส์ สังเกตว่าต้องใช้เวลาสักครู่กว่าที่การหมุนนั้นจะเกิดขึ้น
‫นั่นเป็นเพราะว่าเรากำลังสอดแทรกไปยังการหมุนเป้าหมายนั้นอย่างราบรื่น
‫ตอนนี้มันเยี่ยมมาก
‫นั่นคือสิ่งที่ฉันต้องการ
‫ไม่ว่าฉันจะขยับเมาส์อย่างไร ฉันก็ไม่มีวันได้รับการเคลื่อนไหวแบบกระตุกๆ กระปรี้กระเปร่า
‫ตอนนี้ ห้าเป็นความเร็วอินเทอร์เน็ตที่ช้ามาก แต่เราสามารถเปลี่ยนสิ่งนั้นได้
‫เราสามารถทำให้มันเร็วขึ้นเล็กน้อย
‫ฉันจะตั้งค่านี้เป็น 25 ดูว่ามันจะออกมาเป็นอย่างไร และฉันจะให้คุณตัดสินใจเลือกมูลค่าที่คุณชอบสำหรับเกมของคุณ
‫อีกครั้งหนึ่ง เริ่มต้นการเขียนโค้ดแบบสดและกดเล่น
‫ตอนนี้ฉันมีการแก้ไขที่ค่อนข้างเร็ว แต่ก็ไม่หัก
‫มันยังเร็วอยู่ แต่ก็ไม่ใช่ทันทีทันใด
‫ตราบใดที่เราไม่ทำอะไรแบบนี้ เราก็ไม่เข้าใจ
‫พฤติกรรมบ้าๆบอๆ
‫และแน่นอน ถ้าคุณต้องการให้การหมุนช้าลง คุณรู้วิธีการทำในตอนนี้ และเราเสร็จสิ้นการวาด
‫debug sphere ดังนั้นฉันจะลบมันออกไป
‫ตกลง.
‫โดยสรุปแล้ว เราได้ตั้งค่าการหมุนของป้อมปืนและเรากำลังพิจารณาเป้าหมาย ซึ่งเป็นเวกเตอร์
‫F ที่สัมพันธ์กับจุดหนึ่งในโลก
‫ตอนนี้เราแค่ใช้ผลการสืบค้นกลับ
‫ตอนนี้เราใส่ฟังก์ชันนี้ในคลาสปิงปองฐานและทำให้มีการป้องกัน ซึ่งหมายความว่าเราสามารถสืบทอดฟังก์ชันในคลาสรถถังได้
‫และเมื่อเราพร้อมที่จะสร้างชั้นหอคอยตามฐานแล้ว ชั้นหอคอยนั้นจะสืบทอดฟังก์ชันป้อมปืนหมุนนี้และเราสามารถนำกลับมาใช้ใหม่ได้
‫สิ่งที่เราต้องทำคือผ่าน
‫ในรูปลักษณ์ใหม่ที่ Target เราจะพยายามสร้างคลาสหอคอยที่ได้มาจากฐาน - ในการบรรยายที่จะมาถึง
‫เจอกันเร็วๆนี้ครับ