‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะมาแนะนำฟังก์ชันของสมาชิก และฟังก์ชันนี้จะปลอดภัยและเป็นฟังก์ชันปกติ
‫ซึ่งจะทำให้เราสามารถจับทิศทางของเวกเตอร์เฉพาะได้
‫มาดูกันว่ามันทำงานอย่างไร
‫ดังนั้น วิธีง่ายๆ ของเราในการส่งแพลตฟอร์มกลับไปในทิศทางตรงกันข้ามคือทำงานด้วยความเร็วที่เราได้ทดสอบแล้ว
‫แต่จะเกิดอะไรขึ้นถ้าฉันพูดว่า เฮ้ มาทำให้แพลตฟอร์มนี้เร็วขึ้นสิบเท่ากันเถอะ
‫ไปข้างหน้าและเล่นและดูว่าเกิดอะไรขึ้น
‫จู่ๆ ชานชาลาก็กระโดดไปข้างหน้าค่อนข้างมาก และมันก็ไม่ได้วนเวียนอยู่ในตำแหน่งเดิมเหมือนเมื่อก่อน
‫และเหตุผลของเรื่องนี้ก็เพราะว่าตำแหน่งปัจจุบัน เมื่อเราตั้งค่าให้เป็นตำแหน่งเริ่มต้น ไม่จำเป็นต้องเป็นระยะทางที่เคลื่อนที่อย่างแน่นอน
‫เราอาจมีค่าเกินได้
‫และนั่นก็ถูกจับในคำสั่ง if
‫เรากำลังบอกว่าระยะทางที่เคลื่อนที่นั้นมากกว่าระยะเคลื่อนที่ ซึ่งหมายความว่าเราจะโอเวอร์ช็อต
‫เราต้องโอเวอร์ช็อตเพื่อเรียกสิ่งนี้ if คำสั่ง
‫แต่คำถามคือโดยมากน้อยเพียงใด และนั่นจะขึ้นอยู่กับว่าเวลาเดลต้าจะมากเพียงใด
‫เราสามารถเกินจำนวนได้มาก โดยเฉพาะอย่างยิ่งหากความเร็วของแท่นสูง ซึ่งหมายความว่าตำแหน่งเริ่มต้นของเราอาจคลาดเคลื่อนเมื่อเวลาผ่านไป
‫อาจไม่คงที่
‫วิธีที่ดีกว่าในการทำเช่นนี้คือการคำนวณว่าเราต้องเคลื่อนที่จากตำแหน่งเริ่มต้นเดิมไปไกลแค่ไหนเพื่อไปยังตำแหน่งใหม่โดยใช้ระยะการเคลื่อนที่ที่แน่นอน
‫ลองนึกภาพการคำนวณกลับไปกลับมา
‫เรากำลังบอกว่าเรามีแท่นอยู่ที่จุดเริ่มต้นตรงนี้
‫เราบอกว่ามันมีความเร็วซึ่งเราสามารถแทนด้วยลูกศรที่เป็นทิศทางและขนาด และยังมีระยะทางที่เราอยากให้มันเคลื่อนที่ด้วย
‫เราจะแสดงมันด้วยวงเล็บปีกกานี่
‫สิ่งที่เราพูดคือเราต้องการหาจุดที่แน่ชัดว่าชานชาลาจะอยู่ตรงจุดใด ไม่ใช่โอเวอร์ช็อต
‫แต่ต้องการแค่ตำแหน่งสุดท้ายเท่านั้น
‫ทีนี้ วิธีที่เราสามารถทำได้คือ กำหนดทิศทางของลูกศรความเร็วนั้น
‫ในภาษาเวกเตอร์ นี่เรียกว่าปกติของลูกศร และโดยพื้นฐานแล้วมันลดขนาดลงมาเป็นขนาดหนึ่ง
‫ดังนั้นเราจึงได้ทิศทาง แต่มีขนาดเดียว
‫นั่นทำให้เรารู้จำนวนนี้ โดยพื้นฐานแล้ว ขนาดของความเร็ว เรากำลังไปได้เร็วแค่ไหน
‫แล้วสิ่งที่เราทำได้คือเราสามารถคูณทิศทางนั้นด้วยปริมาณของระยะทาง เพื่อให้ได้ลูกศรที่ทำให้เรามีการเคลื่อนที่ทั้งหมดจากตำแหน่งเริ่มต้นไปยังตำแหน่งสิ้นสุด
‫อย่างแน่นอน.
‫มาดูกันว่าเราจะทำสิ่งนี้ได้อย่างไรใน C++
‫สิ่งที่เรากำลังมองหาคือจุดเริ่มต้นใหม่
‫ลองลบวิธีที่เราทำอยู่ตอนนี้ แล้วเราจะได้ตำแหน่งเริ่มต้นเท่ากับ ทีนี้ มันจะเท่ากับอะไร?
‫ทีนี้ มันจะเท่ากับ อย่างแรกเลย ตำแหน่งเริ่มต้น บวกอะไรสักอย่าง เพราะเราเริ่มจากตรงนี้
‫และเรากำลังบวกเวกเตอร์สีเขียวนี้เพื่อไปสิ้นสุด
‫แล้วเวกเตอร์สีเขียวนั่นคืออะไร?
‫นั่นคือจุดที่เราต้องได้รับความเร็วปกติของแพลตฟอร์ม
‫และเพื่อให้เข้าใจง่ายขึ้น ผมจะแยกมันออกเป็นตัวแปรของมันเอง
‫เราจะสร้างตัวแปรใหม่ของเวกเตอร์ประเภท F ซึ่งผมจะเรียกทิศทางการเคลื่อนที่
‫เพื่อให้ชัดเจนว่าเรากำลังพยายามเก็บไว้ในนั้นคืออะไร
‫แล้วเราจะ รับสิ่งนี้จากจุดความเร็วของแพลตฟอร์ม ให้ปลอดภัย ปกติ แล้วใส่วงเล็บในตอนท้าย
‫เกิดอะไรขึ้นที่นี่?
‫เราไม่เคยเห็นสิ่งนี้มาก่อน
‫เราใช้ Dot เพื่อจับส่วนประกอบของเวกเตอร์ X, Y และ Z
‫นั่นคือตัวแปร
‫แต่ใน C ++ และในการเขียนโปรแกรมเชิงวัตถุโดยทั่วไป เรายังมีฟังก์ชันที่มีอยู่ในคลาสด้วย ดังนั้นเราจึงสามารถใช้ตัวดำเนินการ
‫DOT เพื่อจับหนึ่งในนั้นได้
‫เราใช้เครื่องหมายทวิภาคเมื่อเราพยายามเอามันออกจากคลาสเอง
‫แต่เมื่อเราต้องการดำเนินการกับเวกเตอร์จริง ดังนั้นเวกเตอร์ความเร็วของแพลตฟอร์ม เราสามารถใช้ตัวดำเนินการจุดเพื่อให้ได้ค่าปกติของเวกเตอร์นั้น
‫นั่นคือสิ่งที่เราทำที่นี่ โดยใช้ฟังก์ชันสมาชิกแทนตัวแปรสมาชิก
‫เราก็ได้ค่าปกติที่ปลอดภัยของความเร็วของแท่นแล้ว และเราจะใส่เครื่องหมายอัฒภาคต่อท้ายบรรทัด
‫เพราะตรงนี้ เรามีตัวแปรที่เรากำลังบอกว่านั่นคือทิศทางการเคลื่อนที่
‫ตอนนี้เราสามารถใช้สิ่งนั้นในบรรทัดถัดไปเพื่อทำทิศทางการเคลื่อนที่คูณด้วยระยะการเคลื่อนที่ที่กำหนดค่าไว้
‫เนื่องจากเราต้องการเคลื่อนที่ไปยังจุดสิ้นสุดพอดี ไม่ใช่โอเวอร์ชูต
‫และหลังจากที่เราทำเสร็จแล้ว เราควรย้ายแพลตฟอร์มของเราไปยังตำแหน่งสุดท้าย
‫ดังนั้น เราจะกำหนดให้ตำแหน่งนักแสดงเป็นตำแหน่งเริ่มต้น เพราะไม่เช่นนั้น แพลตฟอร์มของเราจะเกินพิกัดและผ่านตำแหน่งสิ้นสุดนั้น
‫เนื่องจากเราจะอัปเดตด้วยตำแหน่งปัจจุบัน ซึ่งเป็นตำแหน่งที่โอเวอร์ช็อต
‫นั่นทำให้เราเคลื่อนที่ไปยังจุดสิ้นสุดได้อย่างแม่นยำ
‫แล้วเริ่มจากตำแหน่งเริ่มต้นใหม่นั้น
‫ตอนนี้สิ่งสำคัญคือเราต้องอัปเดตความเร็วของแพลตฟอร์มหลังจากที่เราทำทั้งหมดนี้แล้ว เนื่องจากเรากำลังใช้มันเพื่อควบคุมทิศทางการเคลื่อนที่
‫ดังนั้นฉันจะอัปเดตความเร็วของแพลตฟอร์มหลังจากที่เรากำหนดตำแหน่งนักแสดงแล้ว
‫ทีนี้ลองย้อนกลับไปที่หนึ่งรีลแล้วกดคอมไพล์แล้วดูว่าสิ่งนี้ได้รับการแก้ไขหรือไม่
‫ปัญหาเกี่ยวกับแพลตฟอร์มของเราในการเดินหน้าและถอยหลัง เรามาปิดเทอร์มินัลนี้แล้วกดปุ่มเล่น
‫และตอนนี้ถ้าเราดู แพลตฟอร์มกำลังเคลื่อนที่อย่างรวดเร็ว แต่มันเคลื่อนที่ได้อย่างน่าเชื่อถือรอบๆ ตำแหน่งเริ่มต้นและจุดสิ้นสุดที่เราคาดหวัง
‫นั่นคือทั้งหมดที่ฉันอยากจะกล่าวถึงในการบรรยายครั้งนี้
‫เราเพิ่งแก้ไขข้อผิดพลาดเล็กน้อยที่อาจครอบตัดสำหรับการกำหนดค่าแพลตฟอร์มบางส่วนของเรา
‫เจอกันใหม่ตอนหน้าค่ะ