‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะคำนวณระยะทางที่แพลตฟอร์มของเราย้ายจากตำแหน่งเริ่มต้น
‫และแสดงในเครื่องมือแก้ไขเพื่อให้เราตรวจสอบและแก้ไขข้อบกพร่อง
‫มาดูวิธีการทำกัน
‫ตอนนี้เราได้เห็นแล้วว่าเราสามารถ Implement ส่วนแรกของ pseudocode ได้
‫เราได้เขียนแพลตฟอร์ม MOVE ไว้ข้างหน้าแล้วตอนนี้ใช้งานได้
‫ดังนั้นจึงเป็นแพลตฟอร์มการส่งกลับที่เรายังไม่ได้กล่าวถึง
‫และคุณสามารถเห็นความคิดเห็นแรกที่มีการตรวจสอบว่าเราได้ย้ายไปแล้ว
‫แล้วเราจะตรวจสอบได้อย่างไรว่าเราได้ก้าวไปไกลแค่ไหนตั้งแต่เริ่มเล่น?
‫มีสององค์ประกอบนี้
‫ก่อนอื่น เราต้องหาความแตกต่างระหว่างเวกเตอร์สองตัวกับระยะห่างระหว่างสองตัวนี้
‫และอีกอย่างที่เราต้องคิดคือ จะติดตามว่าเราเริ่มต้นจากที่ใด
‫ส่วนแรกค่อนข้างตรงไปตรงมา
‫โชคดีที่สิ่งที่เราต้องทำคือไปที่แพลตฟอร์มเคลื่อนที่ของเรา
‫H และเราต้องการสร้างตัวแปรใหม่ที่นี่ แต่ไม่ใช่ตัวแปรที่เปิดเผยต่อพิมพ์เขียว
‫ครั้งหนึ่ง นี่เป็นเพียงตัวแปรสำหรับ C++ เท่านั้น ดังนั้นเราจึงไม่จำเป็นต้องวางคุณสมบัติใหม่ไว้บนสุด
‫และมันจะเป็นเวกเตอร์ F ที่เรียกว่าตำแหน่งเริ่มต้นหรือตำแหน่งเพื่อใช้คำศัพท์เดียวกับที่ใช้ใน
‫Unreal
‫และเราจะไม่ตั้งค่านี้เป็นค่าใดๆ เลย เพราะมันไม่มีเหตุผลที่จะเริ่มต้นตำแหน่ง
‫เรายังไม่รู้ แต่เราจะรู้ได้ใน Begin Play
‫นั่นคือสิ่งที่เรากำลังจะทำ
‫เราจะไปที่ C++ แล้วเริ่มเล่นหลังจากซุปเริ่มเล่นบิต
‫เราจะกำหนดตำแหน่งเริ่มต้นเพื่อให้เราสามารถบอกตำแหน่งเริ่มต้นได้
‫และจำไว้ว่า เราไม่ได้ใส่เวกเตอร์ f ไว้ข้างหน้านี้ เพราะเรากำลังพยายามอ้างถึงตัวแปรคลาส
‫แทนที่จะสร้างตัวแปรโลคัล
‫ดังนั้นเราจะตั้งค่าตำแหน่งเริ่มต้นนี้ให้เท่ากับตำแหน่งรับนักแสดง เพราะในตอนเริ่มต้นของการเล่น
‫นักแสดงอยู่ที่จุดเริ่มต้น
‫ดังนั้นเราจึงได้กำหนดตำแหน่งเริ่มต้น และนั่นหมายความว่าเรามีตัวแปรที่คงอยู่สำหรับอินสแตนซ์ทั้งหมดของคลาสนี้
‫ดังนั้นเราจึงสามารถใช้มันซ้ำและทำเครื่องหมายได้เช่นกัน
‫และเราได้ตัวแปรที่เราสามารถลองหาระยะห่างระหว่างกันได้
‫เราสามารถพูดได้ว่า เฮ้ ตำแหน่งปัจจุบันเบี่ยงเบนไปจากตำแหน่งเริ่มต้นนั้นไกลแค่ไหน?
‫เพื่อให้สามารถทำเช่นนี้ได้ ฉันต้องเพิ่มไวยากรณ์ C++ อีกเล็กน้อยในอภิธานศัพท์ของเรา
‫อย่างแรก จะเรียกว่า Scope Resolution Operator ซึ่งเรียกยากหน่อย แต่จริงๆ แล้วมันคือตัวดำเนินการโคลอนคู่ที่เราเคยเห็นในไฟล์
‫C++ ของเรามาก่อน
‫และโดยพื้นฐานแล้ว ทั้งหมดที่ทำได้คือให้คุณดูภายในคลาสได้ในลักษณะเดียวกับตัวดำเนินการ DOT
‫ช่วยให้คุณดูภายในอินสแตนซ์ของคลาสได้
‫ลองมาดูรายละเอียดเพิ่มเติมกันสักหน่อย
‫เรารู้ว่าฟังก์ชันติ๊กเป็นของคลาสแพลตฟอร์มที่กำลังเคลื่อนที่ แต่มันไม่ใช่ของอินสแตนซ์เฉพาะของคลาสนั้น
‫ทุกอินสแตนซ์ของแพลตฟอร์มที่เคลื่อนไหวมีการใช้งานแบบเดียวกันซึ่งหมายถึงการเป็นคลาส
‫ดังนั้นตัวดำเนินการความละเอียดขอบเขตที่นี่ระหว่างแพลตฟอร์มที่กำลังเคลื่อนที่และ Tick กำลังบอกเราว่านี่คือขีดที่เป็นของคลาสแพลตฟอร์มที่กำลังเคลื่อนที่
‫เช่นเดียวกับก่อนหน้านี้ เราใช้ตัวดำเนินการจุดเพื่อรับ x ที่เป็นของตำแหน่งปัจจุบัน
‫ตำแหน่งปัจจุบันคือตัวอย่างหนึ่งของเวกเตอร์ F แต่เราสามารถใช้สิ่งนี้เพื่อรับฟังก์ชันที่เป็นของคลาสเวกเตอร์
‫F และไม่ทำงานบนอินสแตนซ์เฉพาะของคลาสนั้น
‫ตัวอย่างหนึ่งคือการหาระยะห่างระหว่างเวกเตอร์สองตัว
‫วิธีที่เราทำใน Unreal คือการใช้ฟังก์ชันที่อยู่ในคลาสเวกเตอร์ F
‫เราก็เลยทำเวกเตอร์ f, แล้วก็โคลอนโคลอนเพื่อมองเข้าไปในคลาสนั้นว่ามีฟังก์ชันใดบ้างที่เราสามารถใช้ได้
‫และเราสามารถมองผ่านได้
‫และตอนนี้ฉันแค่ดึงความสนใจของคุณไปที่การเติมข้อความอัตโนมัติที่ปรากฏขึ้น ณ จุดนี้
‫ฉันไม่ได้พูดถึงมันในอดีต แต่เมื่อเราดำเนินการเหล่านี้ มันพยายามที่จะฉลาดและบอกเราว่าฟังก์ชั่นใดบ้างที่มีอยู่ในคลาสเวกเตอร์
‫F นั้น
‫และคุณจะเห็นว่ามีไม่กี่คน
‫สิ่งที่เรากำลังมองหาเรียกว่า Dist Short สำหรับระยะทาง
‫ตอนนี้คุณจะสังเกตเห็นว่ามีระยะทางที่เรียกว่าระยะทางจริง ๆ และมีความหมายเหมือนกัน
‫เราสามารถใช้ได้อย่างใดอย่างหนึ่ง แต่ฉันจะใช้อันที่สั้นกว่าเพื่อให้โค้ดกระชับขึ้นและเราสามารถเปิดวงเล็บได้
‫และอีกครั้ง การเติมข้อความอัตโนมัติเข้ามาช่วยเราโดยบอกว่าต้องใช้อะไรในการโต้แย้ง
‫เราจะเห็นได้ว่าอาร์กิวเมนต์แรกคือ f vector สาม D และอันที่สองเป็นผลที่มีผลสาม
‫D เช่นกัน
‫ผมก็เลยเป็นความจริงที่ว่ามันถูกเรียกว่าเอฟเฟกต์ 3 D ที่นี่ค่อนข้างแปลก แต่โดยพื้นฐานแล้วมันขอเวกเตอร์
‫f
‫มันบอกว่าถ้าคุณส่งอาร์กิวเมนต์สองตัว, ทั้งคู่เป็นเวกเตอร์ f, ผมจะบอกคุณว่าค่าที่ส่งคืนคือบิตนี่ทางซ้ายมือจะเป็นสองเท่า
‫ตอนนี้การดับเบิ้ลเป็นเพียงการลอยตัวที่แม่นยำยิ่งขึ้น
‫ดังนั้นเราจึงสามารถพูดได้
‫นั่นคือลอยออกมาจากที่นี่
‫นิพจน์ที่เราสร้างขึ้นจะสร้างทุ่น
‫สุดยอด.
‫สิ่งที่เราจะทำคือเราจะพยายามหาระยะห่างระหว่างตำแหน่งเริ่มต้น
‫เราจะพิมพ์ตำแหน่งเริ่มต้นเป็นอาร์กิวเมนต์แรก
‫แล้วอันที่สองจะเป็นตำแหน่งปัจจุบัน
‫ไม่ต้องกังวล ในขั้นตอนนี้ มันไม่สำคัญหรอกว่าเราจะวางรอบนี้ไปทางไหน เพราะระยะห่างระหว่างเวกเตอร์สองตัวจะเท่ากัน
‫ไม่ว่าคุณจะเริ่มจาก A ไป B หรือ B ไป A ก็จะมีระยะทางเท่ากันเสมอ
‫เราก็ใส่แบบนี้ก็ได้ ถ้าคุณต้องการ
‫ตอนนี้เราได้นิพจน์ที่คืนค่าทศนิยม
‫ดังนั้นฉันจึงขอท้าให้คุณอัปเดตคุณสมบัติใหม่โดยใช้นิพจน์นี้ เพื่อที่เราจะได้เห็นว่าค่าของมันเป็นอย่างไร
‫ดังนั้นสร้างคุณสมบัติใหม่ของคุณ float และเรียกมันว่าอะไรก็ได้ที่คุณต้องการ จากนั้นอัปเดตสิ่งนี้ทุกจุดด้วยค่า
‫f vector dist แล้วเล่นเกมและดูว่าเกิดอะไรขึ้น
‫คุณได้รับผลลัพธ์ที่คุณคาดหวังหรือไม่?
‫มันเพิ่มขึ้นอย่างรวดเร็วอย่างที่คุณคาดหวังหรือไม่?
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫อย่างแรกเลย เราจะสร้างคุณสมบัติใหม่
‫ผมจะใส่สิ่งนี้ไว้เหนือตำแหน่งเริ่มต้น เพื่อให้เราจัดกลุ่มคุณสมบัติทั้งหมดเข้าด้วยกัน
‫เราจะมีการแก้ไขคุณสมบัติใหม่ทุกที่ ความจริงแล้วเราไม่จำเป็นต้องแก้ไขสิ่งนี้ได้
‫คุณจึงอาจจินตนาการได้ว่าการแก้ไขที่ใดก็ได้หมายความว่าคุณสามารถแก้ไขได้
‫เรายังมีส่วนที่มองเห็นได้ทุกที่ที่ไม่อนุญาตให้เราแก้ไขแต่ทำให้เรามองเห็นได้
‫นั่นคือสิ่งที่ฉันจะใช้
‫แต่ฉันจะทิ้งหมวดหมู่ไว้ที่นี่เพื่อความง่าย เพราะเราแค่ใช้ตัวแปรนี้เพื่อดูว่าเกิดอะไรขึ้น
‫มันจะเป็นประเภททุ่นลอยตามที่ฉันได้กล่าวไว้และฉันจะเรียกสิ่งนี้ว่าระยะทางที่เคลื่อนที่เพื่อให้ชัดเจนว่าเรากำลังดูอะไรในตัวตรวจสอบ
‫และฉันจะตั้งค่าเริ่มต้นเป็นลบหนึ่ง เพื่อให้เรารู้ว่าเราได้อัปเดตแล้ว
‫หากขึ้นว่าลบหนึ่ง แสดงว่าการอัปเดตยังไม่ผ่าน
‫ผมจะย้ายระยะทางนี้
‫เราจะพูดถึงการใช้งานของเราและติ๊ก และเราจะกำหนดระยะทางที่เคลื่อนที่เท่ากับ
‫F ระยะโคลอนของเวกเตอร์ F
‫ดังนั้นการใช้ตัวดำเนินการความละเอียดขอบเขตนั้นเพื่อรับฟังก์ชันระยะทางแล้วจบบรรทัดด้วยเครื่องหมายอัฒภาค
‫โอเคโดก.
‫ดังนั้นเราจะไปที่ Unreal แล้วกดปุ่มคอมไพล์แล้วปิดเทอร์มินัลได้เลย
‫และเราควรเห็นว่าระยะนี้เคลื่อนที่ โดยแสดงเป็นลบหนึ่ง
‫คุณจะเห็นว่าเป็นสีเทาเพราะแก้ไขไม่ได้เพราะมองเห็นได้ ไม่ได้แก้ไขที่ไหนเลย
‫เอาล่ะ ไปเล่นกันเลย และเราจะต้องแน่ใจว่าเราเลือกแท่นเคลื่อนที่ในโครงร่าง
‫และเราสามารถดูระยะทางที่เคลื่อนมาที่นี่ และคุณจะเห็นว่าทรัพย์สินเพิ่มขึ้นอย่างรวดเร็วที่ประมาณ
‫1 ถึง 300 ต่อวินาที
‫มันจึงวิ่งด้วยความเร็วที่ฉันคาดไว้ คือ 100 ต่อวินาที
‫เลยดูเหมือนประสบความสำเร็จ
‫เราสามารถคำนวณระยะทางที่เคลื่อนที่และเห็นภาพได้
‫สิ่งที่ดี
‫เจอกันใหม่ตอนหน้าค่ะ