‫สวัสดี
‫ยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเพิ่มการเคลื่อนไหวของตัวควบคุม เพื่อให้เราสามารถเคลื่อนที่ไปรอบๆ
‫โดยใช้ตัวควบคุม ซึ่งเป็นสิ่งที่คุณเห็นอยู่ที่นี่
‫ฉันจะทำสิ่งนี้โดยใช้ชุดแกนที่แตกต่างกันสำหรับการค้นหาอัตราและดูอัตราที่ถูกต้อง และเราจะเห็นว่าเหตุใดจึงจำเป็น
‫มาดำดิ่งและหาสาเหตุกันเถอะ
‫ดังนั้นฉันจึงต้องการเคลื่อนที่ไปรอบๆ ฉากของเราโดยใช้ตัวควบคุม
‫ฉันสามารถทำได้แล้วเมื่อไม่ได้อยู่ในโหมดเล่น
‫ดังนั้นเราจึงต้องการที่จะทำการเคลื่อนไหวในลักษณะเดียวกันนี้ด้วยการแพนกล้องด้วยไม้ขวาและเคลื่อนที่ไปทางซ้ายและขวาด้วยไม้เท้าซ้ายของเรา
‫และเรายังสามารถขึ้นและลงได้
‫แต่นั่นไม่ใช่สิ่งที่คู่ต่อสู้ของเราจะสามารถทำได้ เพราะไม่ใช่เบี้ยบิน
‫สิ่งที่เราจะทำคือ อย่างแรกเลย การทำแผนที่การเคลื่อนไหวนั้นง่าย
‫สิ่งที่เราต้องทำคือไปที่การตั้งค่าโปรเจ็กต์ของเรา ไปที่ใดก็ตามที่อินพุตอยู่ อินพุตของเครื่องยนต์ และเรามีแกนเคลื่อนที่ไปข้างหน้า
‫และเราก็มีแกนขวาเคลื่อนที่ด้วย
‫และมันค่อนข้างตรงไปตรงมาที่จะเพิ่มการแมปอื่น เช่นเดียวกับ W และ S เราสามารถเพิ่มในแป้นเกมของเราได้
‫ถ้าเราดูที่ gamepad คุณจะเห็นปุ่ม Thumbstick ด้านซ้ายที่เราต้องการให้แกน y เคลื่อนที่ไปข้างหน้า
‫สำหรับการเคลื่อนไปทางขวา เราจะเพิ่มแป้นเกมอีกครั้ง และมันคือแป้นเกม ยังคงเป็นแท่งด้านซ้าย
‫แต่คราวนี้เรากำลังทำแกน x และ y และเราเห็นว่านั่นเป็นการเคลื่อนไหวที่ถูกต้องหรือไม่
‫ดังนั้นไปข้างหน้าและกดเล่น
‫ฉันใช้ alt p เป็นทางลัดสำหรับสิ่งนั้น
‫จากนั้นซ้ายและขวาทำงานเดินหน้าและถอยหลังอย่างที่เราคาดหวัง
‫แต่เห็นได้ชัดว่าการเลี้ยวไม่ทำงานเพราะเรายังไม่ได้ทำแผนที่
‫ลองมาดูกัน
‫ถ้าเราไปที่การตั้งค่า การตั้งค่าโปรเจ็กต์ และป้อนข้อมูลอีกครั้ง มาดูกัน เงยหน้าขึ้น
‫ขณะนี้เราใช้เมาส์ y
‫จะผิดอะไรกับการเพิ่มในที่นี่?
‫ตัวอย่างเช่น แป้นเกม แท่งขวา และคราวนี้แกน y?
‫ในความพยายามครั้งแรกเราสามารถไปเล่นสักหน่อย
‫นี่อาจดูเหมือนไม่เป็นไรจริงๆ
‫เราเข้าไปข้างในและคุณจะเห็นว่าเราสามารถย้ายไปรอบๆ ได้
‫ใช่แน่นอน.
‫มันเร็วไปหน่อย แต่ก็ไม่เป็นไรใช่ไหม
‫ไม่เป็นไรใช่ไหม
‫ไม่ได้จริงๆ
‫และเหตุผลในท้ายที่สุดก็ขึ้นอยู่กับอัตราเฟรมและวิธีการทำงานของแกนเหล่านี้
‫จะเกิดอะไรขึ้นกับเมาส์เมื่อเราเล่นเกมด้วยความเร็ว 30 เฟรมต่อวินาที เมื่อเราเลื่อนเมาส์จากซ้ายไปขวาผ่านหน้าจอด้วยความเร็วเท่ากัน
‫เราอาจเห็นว่าค่าของแกนเท่ากับสิบ จากนั้นสิบแล้วสิบ
‫และนี่กำลังบอกเราว่าทุกครั้งที่เมาส์ขยับไปทางขวาสิบหน่วย และทำเหมือนเดิมทุกเฟรม
‫จะเกิดอะไรขึ้นหากเราเพิ่มอัตราเฟรมเป็นสองเท่า
‫ทันใดนั้นเมาส์ก็ยังเคลื่อนที่ในอัตราเดิมเพราะผู้เล่นยังคงขยับมือด้วยความเร็วเท่าเดิม
‫แต่เนื่องจากเราแสดงเฟรมบ่อยขึ้น เรามีขีดบ่อยขึ้น แล้วสิ่งที่จะเกิดขึ้นคืออินพุตจากแกนจะลดลงครึ่งหนึ่งในแต่ละครั้ง
‫เราจะได้ 5 จาก 5 หรือ 5 ห้าหรือห้า
‫เยี่ยมมาก ไม่เป็นไร เพราะนั่นหมายความว่าเราจะยังคงเลื่อนหน้าจอของเราในอัตราเท่าเดิม
‫ไม่ว่าเราจะมีคอมพิวเตอร์ที่เร็วหรือช้าก็ตาม
‫หากเราเลื่อนเมาส์ไปในระดับหนึ่ง คุณจะสังเกตเห็นการเคลื่อนไหวที่เท่ากัน ซึ่งเป็นสิ่งที่เราต้องการ
‫ตอนนี้สิ่งต่าง ๆ เปลี่ยนไปเล็กน้อยเมื่อเราดูที่คอนโทรลเลอร์ สมมติว่าเราเร่งเต็มไปทางขวาด้วยคอนโทรลเลอร์อะนาล็อกของเรา
‫และมันอยู่ที่ 30 เฟรมต่อวินาที
‫เราได้หนึ่งแล้วหนึ่งแล้วหนึ่ง
‫สมเหตุสมผลใช่มั้ย?
‫แล้วถ้ามันอยู่ที่ 60 เฟรมต่อวินาทีล่ะ?
‫เรายังคงได้รับหนึ่งจากนั้นหนึ่งจากนั้นหนึ่งแล้วหนึ่ง
‫แต่เราได้รับมากกว่านั้นเพราะเราได้รับเฟรมมากขึ้น
‫หากคุณใช้สิ่งนั้นโดยตรงเพื่อส่งผลต่อการเคลื่อนที่ของสัญลักษณ์แทนตัว คุณจะเห็นว่ามันเคลื่อนที่ด้วยความเร็วเป็นสองเท่า
‫ที่อัตราเฟรมสองเท่า ไม่ใช่สิ่งที่เราต้องการ
‫สิ่งที่เราจะทำคือแนะนำความเป็นอิสระของอัตราเฟรมที่นี่
‫ในการทำสิ่งนี้ เราต้องคูณด้วยเวลาเดลต้าได้
‫เราต้องการใช้แกนอินพุตเพื่อช่วยปรับความเร็วในการหมุน
‫นั่นเป็นเพียงเล็กน้อยที่จะเข้าไปที่นั่น
‫แต่สิ่งที่ผมหมายถึงคือ เราจำเป็นต้องมีบางอย่างเช่น ตัวแปรอัตราการหมุน
‫เราจะสร้างคุณสมบัติใหม่สำหรับสิ่งนั้น ซึ่งจะเป็นการแก้ไขที่ใดก็ได้ และเราจะให้มันเป็นแบบลอยตัว
‫และมันจะเป็นอัตราการหมุนเวียน
‫ตอนนี้ฉันกำลังจะใช้อัตราการหมุนเดียวกันสำหรับทั้งบนและซ้ายและขวา
‫คุณสามารถไปข้างหน้าและมีตัวแปรแยกต่างหากสำหรับทั้งสองอย่าง
‫และผมไม่รู้จริงๆ ว่าอัตราการหมุนจะดีแค่ไหนที่นี่
‫ผมแค่จะให้เลขฐานสิบหกของแก๊สที่บินได้
‫ฉันไม่แน่ใจว่าหน่วยงานที่เกี่ยวข้องมีอะไรบ้าง ดังนั้นฉันจะพูดต่อไปว่าสิบ
‫แต่เราจะได้เห็น
‫บางทีนั่นอาจเร็วเกินไป
‫บางทีนั่นอาจจะช้าเกินไป
‫เราสามารถปรับสิ่งนั้นได้ในพิมพ์เขียวของเรา เพื่อที่เราจะสามารถดำเนินการต่อและบันทึกสิ่งนั้นได้
‫ฉันจะไปที่ C++ Alt O เพื่อสลับ C++ ยังไงก็ตาม และเราต้องการให้มีแกนประเภทใหม่ เพื่อให้เราสามารถแยกความแตกต่างระหว่างการเคลื่อนไหวได้
‫ใช่แล้ว ซึ่งก็คือเมาส์ การเคลื่อนไหวโดยตรงกับการเคลื่อนไหว
‫ใช่ไหม
‫หรือค่อนข้างขอโทษที่มอง
‫ถูกต้องซึ่งเป็นอัตรา
‫ดังนั้นเราจะทำอย่างนั้นโดยไปที่การตั้งค่าโปรเจ็กต์ของเรา และแทนที่จะให้ gamepad นี้เหลือ thumbstick
‫ที่แมปกับการย้าย
‫ใช่ ขอโทษ ไม่ใช่ปุ่มนิ้วหัวแม่มือซ้าย แต่ปุ่มขวาที่แมปเพื่อค้นหา
‫ฉันทำผิดซ้ำแล้วซ้ำเล่า ลบมันออกจากแกนนั้นและเพิ่มแกนใหม่ซึ่งจะเป็นรูปลักษณ์
‫ขึ้น.
‫ถูกต้อง.
‫และนี่จะส่งผลต่อ gamepad ของเราใช่ไหม
‫ดังนั้น gamepad ใช่ไหม
‫แกน Y เพราะเป็นการมองขึ้น และเรากำลังบอกว่าแกนบวกควรเป็นแกนที่เราใช้อยู่
‫สิ่งที่เราทำได้คือเราต้องแมปสิ่งนี้ และเราไม่ต้องการแมปกับตัวควบคุมโฆษณาโดยตรง
‫ของคุณเพราะเราจำเป็นต้องคำนวณเล็กน้อยเพื่อคำนวณอัตราและทำให้อัตราเฟรมนั้นเป็นอิสระ
‫สิ่งที่เราจะทำคือไปที่ alt 0 และสร้างตัวเองขึ้นมาดู ซึ่งเราได้มาถึงจุดนี้แล้ว
‫และฉันจะสร้างมันขึ้นมาโดยมองขึ้นไปทางขวา และสร้างการเปลี่ยนแปลงการควบคุมนี้
‫P และฉันกำลังใช้ปลั๊กอินการนำไปใช้ของฉัน
‫ไปข้างหน้าและทำการค้นหาอัตราการใช้งาน
‫มีค่าแกนเข้ามา
‫ที่ที่ดี
‫จากนั้นเราต้องการให้แน่ใจว่านั่นคือสิ่งที่เรากำลังเรียกในการตั้งค่าองค์ประกอบอินพุตของผู้เล่น
‫เรามาสร้างบรรทัดใหม่ที่นี่ ทำซ้ำรูปลักษณ์
‫ได้สิ ฉันจะเรียกมันว่ามองขึ้นไป
‫ใช่เช่นนั้นแล้วคัดลอกและวาง
‫การอ้างอิงที่มีคุณสมบัติครบถ้วนสำหรับฟังก์ชันเพื่อเรียกอัตราการค้นหาของเรา
‫โดยพื้นฐานแล้วสิ่งที่เราต้องการจะเรียกเมื่อสิ้นสุดวันคือเพิ่มอินพุตคอนโทรลเลอร์, พิทช์, คอนโทรลเลอร์,
‫อินพุตพิทช์
‫แต่เราอยากคูณนี่ด้วยสองสามอย่าง
‫ดังนั้นค่าการเข้าถึงของเราจึงเป็นค่าระหว่างศูนย์ถึงหนึ่ง
‫ถ้าเราคูณค่าแกนนั้นคูณด้วยอัตราการหมุนของอัตรา
‫สิ่งที่เราจะได้คือความเร็ว แต่สิ่งที่เราต้องการคือระยะทางจริงๆ
‫เช่นเดียวกับเมื่อเราขยับเมาส์ เราเคลื่อนที่ไปในระยะทางที่กำหนด ทุกเฟรม
‫นั่นคือสิ่งที่กำลังเข้ามา
‫เราต้องการแปลงความเร็วนี้เป็นระยะทาง
‫และถ้าคุณจำทางกลับเข้ามาได้ วิชาคณิตศาสตร์ที่คลุมเครือ เพื่อให้ได้ความเร็วจากระยะทางหนึ่งไปอีกทางหนึ่ง
‫เราต้องคูณด้วยระยะเวลา
‫ดังนั้นเราจึงทำเช่นนั้นโดยรับวินาทีเดลต้าจากโลก
‫ตอนนี้เดลต้าวินาทีคืออะไร?
‫นั่นคือระยะเวลาที่ใช้สำหรับเฟรมสุดท้าย
‫ดังนั้นมันจึงตรงกันข้ามกับอัตราเฟรม
‫มันบอกเราว่าเฟรมใช้เวลานานเท่าใด ซึ่งดีมาก เพราะนั่นคือระยะเวลาที่เราต้องใช้การเคลื่อนไหวนี้
‫ดังนั้น ถ้าคุณลองคิดดู เรามีความเร็ว เรามีระยะเวลาที่เราต้องใช้ความเร็วนั้น
‫มันทำให้เรามีการเคลื่อนไหวที่เราต้องการนำไปใช้กับอินพุตระดับเสียงของคอนโทรลเลอร์เป็นหลัก
‫นั่นคือสิ่งที่เราต้องการ
‫Get World ก่อนอื่น เพราะเราต้องการได้ระดับ เราจะได้โลกรอบตัวเรา
‫จากนั้นเราใช้ฟังก์ชันลูกศรเพื่อรับเดลต้าวินาที ซึ่งบอกเราว่าเราต้องการได้ระยะเวลาที่ผ่านไปในเฟรมสุดท้าย
‫ซึ่งทำให้เราได้ค่าประมาณของอัตราเฟรมในช่วงเวลาปัจจุบันอีกครั้ง
‫.
‫ตอนนี้ คุณอาจสงสัยว่าทำไมเราไม่ทำแบบเดียวกันกับอินพุตการเคลื่อนไหว และเหตุผลก็คือว่าอินพุตการเคลื่อนไหว
‫เมื่อคุณป้อนโฆษณาที่นั่น มันจึงสันนิษฐานว่าเป็นอัตรา ไม่ใช่จำนวนการเคลื่อนไหวที่แท้จริง
‫ดังนั้นมันจึงทำการคำนวณนี้สำหรับเราแล้ว โดยพื้นฐานแล้ว การบันทึกไฟล์ ไปที่ที่ไม่จริง
‫และคอมไพล์แล้วดูว่าสิ่งนี้คุ้มค่าหรือไม่
‫มาเริ่มกันเลย และฉันจะพยายามใช้อินพุตคอนโทรลเลอร์ของฉัน
‫เราจะไปที่นั่น.
‫เรากำลังขึ้นลงค่อนข้างช้า
‫แต่หวังว่านี่จะไม่ขึ้นกับอัตราเฟรมโดยสมบูรณ์ เพราะเราใช้เวลาเดลต้านั้นไปแล้ว
‫สิ่งที่ฉันต้องการให้คุณทำคือไปข้างหน้าและใช้อัตราการดูที่เหมาะสม
‫ดังนั้น ทำซ้ำวิธีเดียวกันกับที่ตั้งค่าไว้เพื่อให้ดูดีเหมือนกับที่เขาทำเพื่อค้นหาและปรับแต่งความเร็วเพื่อไม่ให้ช้าลงจริงๆ
‫และคุณสามารถใช้มันเพื่อเคลื่อนที่ไปรอบ ๆ ด่าน หยุดวิดีโอชั่วคราวแล้วไปต่อได้เลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ขั้นตอนแรกคือเราไปและสร้างการแมปแกนใหม่ในการตั้งค่าโครงการของเรา
‫เราจะต้องทำอย่างนั้นอีกครั้ง คราวนี้สำหรับรูปลักษณ์
‫ใช่ไหม
‫ถูกต้อง.
‫เช่นนั้นสิ่งที่ปาก
‫จากนั้นเราจะไปรับ gamepad
‫ทางขวาครั้งนี้และแกน x นั่นคือแกนที่เราจะทำแผนที่
‫จากนั้นเราจะไปที่ไฟล์ส่วนหัวของปืนในครั้งนี้
‫เราจะทำซ้ำอัตราการค้นหา
‫และขอผมแสดงไฟล์ให้คุณดู เพื่อที่คุณจะได้เห็นว่าผมอยู่ที่ไหนทางด้านซ้ายมือ
‫ดังนั้นเราจะมีแทนที่จะใช้อัตราการค้นหา มันจะเป็นการเปลี่ยนอัตราการควบคุมที่เหมาะสมในการสร้างการใช้งาน
‫และเราจะมีโค้ดที่เหมือนกันแทบทุกประการกับการคูณแบบเดียวกันที่นำเรามาจาก อีกครั้งความเร็วเป็นจำนวนระยะทางที่เคลื่อนที่
‫นั่นคือรูปลักษณ์
‫ขวาขวา.
‫ดังนั้น แทนที่จะทำการเพิ่มตัวควบคุม เราจำเป็นต้องป้อนข้อมูลของคุณในครั้งนี้ และจะต้องเรียกอัตราการดูที่ถูกต้องจากส่วนประกอบอินพุตของผู้เล่นที่ตั้งค่าไว้
‫มิฉะนั้นจะต้องถูกเรียกเมื่อมีการจัดการแกนจริงๆ
‫เราจะเพิ่มแกนอื่นในนี้แทนการค้นหาอัตรา
‫มันจะเป็นอัตราการดูที่เหมาะสม
‫ดังนั้นเราจึงต้องการคัดลอกการอ้างอิงนั้นไปยังฟังก์ชัน โดยจำเครื่องหมายและก่อนหน้านั้น และปัญหาที่มีคุณสมบัติครบถ้วนไปยังอักขระ
‫โคลอน
‫โคลอน ดูอัตราที่เหมาะสม
‫ไปข้างหน้าและบันทึกทั้งนั้นและส่วนหัวของไฟล์
‫กลับไปที่โปรเจ็กต์และออกจากการเล่นที่ฉันทิ้งให้กดคอมไพล์ที่นี่แล้ว
‫เราควรจะได้ดำน้ำและเล่นไปรอบๆ
‫ดังนั้น.
‫ขึ้นและลงทำงานช้า ซ้ายและขวา
‫ไม่ค่อยทำงานออกอย่างที่ฉันคาดหวัง
‫มาตรวจสอบการตั้งค่าโครงการของเรากัน
‫ดังนั้นรูปลักษณ์ของเรา
‫ถูกต้อง.
‫ดูเหมือนโอเค
‫นิ้วหัวแม่มือขวา.
‫Thumbstick แกน x
‫มาเช็คกัน
‫นั่นคือทั้งหมดที่จะผ่านเข้าไปในรูปลักษณ์ของแกนผูก C ++ อย่างถูกต้อง
‫ขวาขวา.
‫มันเรียกฟังก์ชั่นอัตราการดูที่ถูกต้องหรือตะเข็บเพื่อเรียกอินพุตของคุณตามที่ควรจะเป็น
‫ดาน่า เกิดอะไรขึ้นที่นั่น?
‫ฉันเพียงแค่กด recompile อีกครั้งแล้วกดเล่นอีกครั้ง
‫บางครั้งคุณต้องทำเช่นนี้
‫แต่ตอนนี้การมองไปทางซ้ายและขวากำลังทำงานขึ้นและลงกำลังทำงานแม้ว่าจะก้าวช้ามาก
‫ดังนั้นเราจะปรับแต่งด้วยพิมพ์เขียวตัวละครของเรา
‫ไปหาตัวละคร VP Shooter ของเรากันเถอะ
‫เปิดพิมพ์เขียวของเขา
‫แล้วเลื่อนลงมาหาอัตราการหมุนกัน ซึ่งผมจะคูณด้วยสิบ
‫พยายามให้เร็วขึ้นสิบเท่า แล้วเราจะพบค่าที่สมเหตุสมผลระหว่างนั้น
‫นี่เป็นวิธีหนึ่งที่คุณสามารถลองและค้นหาค่าได้เสมอโดยไปและเปลี่ยนลำดับความสำคัญก่อน
‫นั่นอยู่ใกล้กว่ามากในสนามเบสบอลด้านขวา
‫มันอาจจะไวเกินไปหน่อย ดังนั้นบางทีฉันแค่ลดมันลงไปครึ่งหนึ่ง
‫ลองประมาณ 50 ครั้งนี้
‫ไม่ใช่ 500 แต่เป็น 50
‫มาลองดูกัน
‫ตีเล่นและย้ายไม้เท้าของฉันไปรอบ ๆ
‫รู้สึกเป็นธรรมชาติมากขึ้น
‫คุณอาจต้องการไปที่ไหนสักแห่งเพียงเล็กน้อยระหว่างทั้งสอง
‫ดังนั้นไปในระหว่างทั้งสอง
‫อีกครั้ง ฉันจะพูดประมาณ 70 ครั้งนี้ แทนที่จะไปถึง 170 อาจเป็นอัตราที่ถูกต้อง
‫มาดูกันว่าเราได้ตีทองไหม
‫ใช่ฉันก็คิดว่าอย่างนั้น.
‫ฉันคิดว่า 70 จะเป็นอัตราที่เหมาะสมสำหรับฉันที่จะย้ายไปรอบๆ
‫เห็นได้ชัดว่านี่เป็นสิ่งที่เกมมักจะอนุญาตให้คุณปรับแต่งหรืออนุญาตให้ผู้เล่นปรับแต่งในการตั้งค่า
‫เราจะไม่พิจารณาสิ่งนั้น
‫ซึ่งอยู่นอกเหนือขอบเขตของส่วนนี้ แต่เป็นสิ่งที่คุณอาจต้องการเปิดเผยต่อผู้ใช้ในเกมของคุณเอง
‫เย็น.
‫ดังนั้นในการบรรยายครั้งนั้น เราได้เห็นความแตกต่างระหว่างอินพุตของคอนโทรลเลอร์กับอินพุตของเมาส์ และวิธีที่เราต้องจัดการกับอัตราแทนที่จะเป็นการเคลื่อนไหวแบบสัมบูรณ์
‫ในการบรรยายครั้งต่อไป เราจะดูที่กล้องบุคคลที่สาม ที่ฉันบอกเป็นนัยๆ
‫แล้วเจอกัน.