‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเรียนรู้วิธีเชื่อมต่อแอนิเมชั่นของเรากับการเล่นเกมของเรา
‫และเราจะทำให้ความเร็วของตัวละครของเราเชื่อมโยงกับพื้นที่ผสมผสานเพื่อให้เราได้รับผลกระทบนี้
‫มาดูวิธีทำกันเลยดีกว่า
‫ตกลง.
‫ดังนั้นเราจึงมีพื้นที่ผสมผสานเพื่อรวมเข้ากับตัวละคร AVP Shooter ตัวนี้
‫สิ่งแรกที่ฉันจะทำคือฉันจะลบทั้งสองส่วนผสมนี้ที่เราใช้เป็นตัวอย่างว่ากราฟแอนิเมชั่นพิมพ์เขียวของแอนิเมชั่นทำงานอย่างไร
‫และแทนที่เราจะนำเข้าจากเบราว์เซอร์เนื้อหาที่ด้านล่างขวา พื้นที่ผสม
‫เราก็เลยสร้างการเคลื่อนไหวขีดล่างของ BBS ขึ้นมา
‫หากคุณลากมันมาที่กราฟแอนิเมชันของคุณ คุณจะเห็นว่ามันนำโหนดสีเขียวเล็กๆ มาไว้ที่นี่
‫และเช่นเดียวกับโหนดผสมอื่นๆ และสิ่งต่างๆ เช่นนั้น เรามีตัวตนและข้อกำหนดที่เราสามารถลากเข้าไปในผลลัพธ์ของเราได้
‫และถ้าฉันกดคอมไพล์ คุณจะเห็นว่ามันอยู่ในพื้นที่เริ่มต้นของเรา และจากนั้นคุณสามารถเห็นการแสดงภาพเล็กๆ
‫นี้ ซึ่งค่อนข้างสะดวกสำหรับการผสมผสานพื้นที่เล็กๆ เข้ามาที่นี่
‫เราน่าจะอยากทำอย่างหลัง ดังนั้นฉันจะไปลบตัวแปรสองตัวที่เรามีอยู่ทางซ้ายและทางข้างหน้า
‫เพราะตอนนี้เรารู้แล้วว่าสิ่งที่เราต้องการคือมุมซึ่งก็คือ กำลังจะลอยกระทง
‫ลองเปลี่ยนเป็น float และเราต้องการตัวแปรความเร็วด้วย ซึ่งก็คือ float
‫ด้วย
‫และเราสามารถแก้ไขสองตัวนี้ในตัวแปรความเร็วเป็นความเร็วและมุมเป็นมุมได้
‫และเราจะตีคอมไพล์ ดูที่ตัวแก้ไขการแสดงตัวอย่างเคลื่อนไหวของเรา และปรับแต่งค่า
‫ก่อนอื่นเลย เรามาเพิ่มความเร็วกันก่อนดีกว่า
‫มาเพิ่มความเร็วให้ถึง 30 กันเถอะ
‫ดูว่าเกิดอะไรขึ้น
‫พวกเขาไป.
‫เขาเริ่มเดินผ่านมา ยกขึ้นเป็น 70
‫เขาเข้าใกล้การวิ่งมากขึ้น
‫เอาไป 100 ครับ
‫ไม่ใช่สิบครับ 100
‫จากนั้นเขาก็วิ่งเต็มที่แล้วเราก็เปลี่ยนมุมได้
‫ที่ 90 องศา เขาจะไปทางขวา 90 องศา -90 กำลังคิดว่าจะไปทางซ้าย
‫เราสามารถไปที่ไหนสักแห่งในระหว่าง
‫คุณสามารถพูดได้ว่า 45 องศา
‫คุณสามารถเห็นเขาวิ่งในมุม 45 องศา และคุณสามารถเห็นพื้นที่ผสมที่มันพยายามเลือกในพื้นที่ผสมและภาพเคลื่อนไหวอะไร
‫เป็นการผสมผสานระหว่างแอนิเมชั่นไปข้างหน้ากับแอนิเมชั่นด้านขวา
‫90 องศา
‫เยี่ยมเลย
‫เราทำได้แล้ว
‫แต่อย่างที่เราทราบ มันต้องขับเคลื่อนโดยการเล่นเกมจริงของเรา และทำไมเราถึงทำอย่างนั้นล่ะ?
‫ทำไมเราไม่มีแอนิเมชั่นขับเคลื่อนการเล่นเกมของเราโดยบอกว่า เราต้องก้าวไปข้างหน้าด้วยความเร็วแบบนั้นและอย่างนั้นเหรอ?
‫เหตุผลที่ไม่ทำเช่นนั้น เหตุผลที่ไม่ใช้แอนิเมชั่นเพื่อขับเคลื่อนการเล่นเกมก็คือคุณมักจะต้องการให้นักออกแบบของคุณสามารถปรับแต่งตัวแปรทุกประเภทเกี่ยวกับการเล่นเกมของคุณได้
‫คุณต้องการให้พวกเขาพูดว่า โอเค รู้สึกไม่ถูกต้องที่ตัวละครตัวนี้วิ่งด้วยความเร็วนี้
‫เขาต้องวิ่งด้วยความเร็วนี้แทน
‫และการเดินควรจะเร็วกว่านี้
‫ดังนั้นคุณจึงไม่ต้องการให้แอนิเมชั่นของคุณจำกัดการออกแบบและความรู้สึกของเกม
‫คุณต้องการให้แอนิเมชั่นหลุดออกจากความรู้สึกของเกมและทำให้ดูดี
‫ดังนั้น ในระหว่างขั้นตอนการออกแบบของคุณ คุณอาจตระหนักดีว่า จริงๆ แล้วเราต้องการแอนิเมชั่นที่ทำงานเร็วขึ้น
‫ไม่เป็นไร แต่คุณต้องการเปลี่ยนเกมก่อนเพื่อไปถึงที่นั่น แทนที่จะต้องไปและลองบันทึกแอนิเมชั่นการวิ่งแบบอื่น
‫หรือหาแอนิเมชั่นการวิ่งแบบอื่นแล้วพบว่าจริงๆ แล้วนั่นไม่ได้ทำให้ความรู้สึกของเกมดีขึ้น
‫นั่นเป็นเหตุผลที่ฉันต้องการแยกสองสิ่งนี้ออกจากกันมากที่สุด
‫มีบางครั้งที่สิ่งต่าง ๆ ต้องสอดคล้องกับแอนิเมชั่น แต่นี่ไม่ใช่หนึ่งในนั้น
‫ดังนั้นจึงมีข้อยกเว้นสำหรับกฎทุกข้อ
‫ดังนั้นอย่าถือเอาสิ่งนี้เป็นกฎเกณฑ์หินอย่างสมบูรณ์
‫คุณจะเห็นตัวอย่างเกมที่ขับเคลื่อนคุณสมบัติบางอย่างจากแอนิเมชันอย่างแน่นอน แต่โดยทั่วไปแล้ว
‫เราต้องการทำในทางกลับกัน
‫เราอยากจะบอกว่าตัวละครในเกมมีความเร็วเท่าไหร่?
‫ให้ฉันไปอัปเดตความเร็วของแอนิเมชั่นแทนที่จะพูดว่า แอนิเมชั่นความเร็วเท่าไหร่?
‫ให้ฉันอัปเดตความเร็วของตัวละครในเกม
‫ตกลง.
‫ด้วยที่กล่าวว่าเราจะทำเช่นนี้ได้อย่างไร
‫โดยพื้นฐานแล้วกลไกของมันคือพิมพ์เขียวนี้ พิมพ์เขียวแอนิเมชั่นนี้มีกราฟเหตุการณ์เหมือนกับพิมพ์เขียวอื่น
‫ๆ ซึ่งหมายความว่ามันสามารถมีสิ่งต่าง ๆ เช่นเหตุการณ์ TIC
‫ถ้าฉันเข้าไปที่กราฟเหตุการณ์และลองดู เรามีโหนดเหตุการณ์สองสามโหนดในนี้ซึ่งเราสามารถใช้เพื่อเริ่มต้นได้
‫เรามีแอนิเมชั่นอัปเดตพิมพ์เขียวนี้
‫หากเราออกจากสิ่งนี้ทุกครั้งที่ต้องการอัปเดตแอนิเมชั่น มันจะให้โหนดการดำเนินการแก่เราและอนุญาตให้เราดำเนินการต่อและรับสถานะบางอย่าง
‫ทุกครั้งที่เราเรียกสิ่งนี้ สิ่งที่เราจะทำคือทุกครั้งที่เราเรียก เราจะไปคว้าสถานะบางอย่าง
‫และสังเกตว่ามีเจ้าของที่วางไข่ที่บอกว่าไปข้างหน้าและรับวัตถุจำนำ
‫ดังนั้น ให้เราเตือนตัวเองว่า -- ในกรณีนี้คือตัวละคร ตัวละครที่เป็นคลาสย่อยของ --
‫และมันจะเป็นตัวละครที่ส่งเสียงบี๊บ
‫ทำไมมันถึงเป็นตัวละครที่ยิงบี๊บ?
‫มาดูกันเลย
‫เพราะตัวละครนี้ถ้าเราเลือกเมชให้ไปที่วิวพอร์ต
‫ขณะนี้มันทำงานแค่แอนิเมชั่นธรรมดาๆ แต่สิ่งที่เราต้องการจะทำคือเปลี่ยนโหมดแอนิเมชั่นไปใช้พิมพ์เขียวแอนิเมชั่น
‫และเราต้องการใช้ตัวละครในเกมยิงแอปนั้น
‫นั่นคือเหตุผลที่นี่คือ -- เจ้าของ
‫มันใช้พิมพ์เขียวแอนิเมชั่นนั้น
‫ตอนนี้พิมพ์เขียวมีเจ้าของโรงรับจำนำแล้ว
‫ดังนั้นสิ่งที่เราต้องการจะทำในฟังก์ชันการอัพเดทนี้ สรุปก็คือ เราต้องการดึงข้อมูลจากตัวจำนำเกี่ยวกับการเคลื่อนที่ของมัน
‫เราอยากจะบอกว่าความเร็วของคุณคืออะไร?
‫มุมของการเคลื่อนไหวของคุณคืออะไร?
‫นั่นคือสิ่งที่เราจะคำนวณในการบรรยายนี้
‫เรากำลังจะทำความเร็วเพราะมันง่ายที่สุดที่จะทำ
‫มุมจะต้องมีการจัดการเล็กน้อยกับการแปลงซึ่งเราจะดูในการบรรยายครั้งต่อไป
‫โหนดที่เราอยากได้ตรงนี้ คือ ได้ความเร็วของเจ้าของโรงรับจำนำ ที่ให้เวกเตอร์นี่กับเราตรงนี้
‫แล้วจากด้านหลังของเวกเตอร์นั้น, เราต้องการหาขนาดหรือความยาวของมัน เพื่อที่เราจะลากออกจากการค้นหาเวกเตอร์นั้นเพื่อหาขนาดได้
‫และสังเกตว่ามันฉลาดมาก และฉันได้ค้นหาขนาดแล้ว แต่มันให้ฟังก์ชันที่เรียกว่าความยาวเวกเตอร์
‫ขนาดชัดเจนมากที่พวกเขาโอเวอร์คล็อกว่าเป็นคำพ้องความหมายสำหรับความยาวเวกเตอร์
‫ทำไมเราต้องการได้ความยาวเวกเตอร์มากกว่าเวกเตอร์เอง?
‫เพราะเรากำลังมองหาทุ่น ซึ่งเป็นเวกเตอร์ความเร็ว รวมถึงทิศทางและความเร็ว
‫ซึ่งเราจะต้องคำนวณมุม
‫แต่มันไม่ใช่สิ่งที่เราจำเป็นต้องคำนวณความเร็ว
‫ความท้าทายเล็ก ๆ น้อย ๆ สำหรับคุณที่นี่
‫ไปข้างหน้า
‫ไม่มีการท้าทายอื่นใดในการบรรยายนี้
‫ไปข้างหน้าและตั้งค่าความเร็วโดยใช้ความยาวเวกเตอร์นี้
‫และจำไว้ว่าหากคุณต้องการพินการดำเนินการใดๆ
‫เรากำลังพยายามทำสิ่งนี้กับแอนิเมชั่นการอัพเดทพิมพ์เขียว
‫หยุดวิดีโอชั่วคราวแล้วไปกันเลย
‫โอเค ยินดีต้อนรับกลับ
‫ดังนั้นความเร็วคือสิ่งที่เราต้องการตั้งค่า
‫ถ้าฉันลากมันเข้าไปในพิมพ์เขียวและกดความเร็วที่ตั้งไว้ คุณจะเห็นว่าเรามีพินการดำเนินการที่เราต้องการ
‫เราจะได้สิ่งนั้นจากแอนิเมชั่น Blueprint Update และเราต้องการ data pin ซึ่งจะเป็นความเร็วที่มาจากความยาวเวกเตอร์เพื่อให้ได้ความเร็ว
‫ดังนั้นมันควรจะสามารถดำเนินการต่อและบันทึกและรวบรวมสิ่งนั้นได้
‫คุณจะเห็นว่ามันรีเซ็ตความเร็วเป็นศูนย์เพราะตอนนี้กำลังพยายามตั้งค่าจากเจ้าของโรงรับจำนำที่ไม่ได้อยู่ที่นั่นจริงๆ
‫ดังนั้นสิ่งที่เราต้องการจะทำคือ ไปเล่นในโลกนี้จริง ๆ และดูว่าเรามีอะไรบ้าง
‫โอเค แบบนี้ดีกว่ามาก
‫เรามีตัวจำนำที่ยังคงนิ่งอยู่บนพื้น ยกเว้นตอนที่ฉันเคลื่อนที่ ซึ่งจุดนั้นทำให้ฉันมีความเร็วบ้าง
‫และถ้าคุณใช้อินพุตแบบอะนาล็อก เช่น คอนโทรลเลอร์ คุณจะเห็นได้โดยการเปลี่ยนอินพุตแบบอะนาล็อกที่เปลี่ยนความเร็ว
‫เราสามารถเปลี่ยนความเร็วของผู้ชายคนนี้ได้
‫เห็นได้ชัดว่ามีสองปัญหาที่นี่
‫อย่างแรกคือถ้าผมเคลื่อนออกจากมุม มันก็แค่ใช้ความเร็วสัมบูรณ์
‫จึงไม่ปรับมุมนั้นในพื้นที่ผสมผสานของเรา
‫ดังนั้นภาพเคลื่อนไหวจึงดูผิด
‫ปัญหาอีกประการหนึ่งคือ เรากำลังก้าวไปข้างหน้าอย่างแน่นอน เนื่องจากความเร็วของอนิเมชั่นของเราไม่ตรงกับความเร็วของตัวละครในเกมของเรา
‫นั่นคือสิ่งที่เราจะดูการแก้ไขในการบรรยายต่อไปเช่นกัน
‫สิ่งที่ดี
‫หวังว่าตอนนี้คุณคงเข้าใจแล้วว่าแอนิเมชั่นควรเชื่อมต่อกับการเล่นเกมโดยใช้พิมพ์เขียวแอนิเมชั่นอย่างไร
‫และคุณควรจะสามารถนำไปใช้กับเกมของคุณเองได้
‫พบกันในการบรรยายครั้งต่อไปที่เราจะเชื่อมโยงมุมเหล่านั้นเพื่อให้การเคลื่อนไหวนี้ดูเป็นธรรมชาติขึ้นเล็กน้อย