วิธีการหลีกเลี่ยงสปาเก็ตตี้ในอนิเมเตอร์?


9

ฉันกำลังทำงานกับแอนิเมชั่นใน Unity และจนถึงตอนนี้ฉันได้สร้างเพียงสี่ (ขึ้นลงซ้ายและขวา) และหน้าต่างภาพเคลื่อนไหวของฉันมีลักษณะดังต่อไปนี้ ... ป้อนคำอธิบายรูปภาพที่นี่

ปัญหาคือถ้าฉันขยับขึ้นฉันต้องการให้ฮีโร่คอยมองหาอย่าไป 'ว่างกลาง' (หรือเขาเริ่ม) แต่นั่นหมายความว่าฉันมีตำแหน่งว่าง 4 ตำแหน่ง ... และแต่ละคนสามารถเปลี่ยนเป็นขึ้นลง ไปทางซ้ายหรือขวาและพวกมันจะอธิบายแบบทวีคูณในแต่ละแอ็คชั่นเพิ่มเติม ...

ซึ่งทำให้ฉันรู้สึกว่าฉันกำลังทำอะไรผิดไป ....

มีวิธีที่ดีกว่าในการเปลี่ยนระหว่างการกระทำที่แตกต่างกันหรือไม่?


ฉันพยายามทำสิ่งนี้มาเป็นเวลานาน น่าเศร้าที่ข้อสรุปของฉันคือคุณไม่สามารถทำได้ แอนิเมเตอร์เสมอกลายเป็นเว็บของสปาเก็ตตี้และเราต้องอยู่กับมัน ลองดูที่วิดีโอนี้มันจะช่วยให้youtube.com/…
ไม่เป็นไร

คำตอบ:


9

คุณสามารถแก้ปัญหาประเภทนี้ได้ด้วย BlendTrees (โดยทั่วไปแล้วความคิดที่ชาญฉลาดมักพึ่งพาต้นไม้ที่ผสมผสานกัน) Blend tree เป็นสถานะภาพเคลื่อนไหวหลายภาพที่ขึ้นอยู่กับพารามิเตอร์ (float) ตัดสินใจว่าภาพเคลื่อนไหวใดที่มีอยู่ในปัจจุบัน (หรืออีกทางหนึ่งภาพเคลื่อนไหวที่เกิดขึ้นอาจเป็นการผสมผสานภาพเคลื่อนไหวหลายภาพ) แม้ว่าภาพเคลื่อนไหวจะไม่ถูกผสม แต่สลับสลับจะเกิดภาพเคลื่อนไหวกลาง (เช่นหากภาพเคลื่อนไหว "ออก" อยู่ที่ 35% ภาพเคลื่อนไหวใหม่จะเล่นจากหน้าไปข้างหน้า 35%) จาก "ข้างนอก" ทั้งหมดนี้ถูกซ่อนไว้ราวกับว่ามันเป็นหนึ่งในรัฐที่เรียบง่าย / เดียว

ตัวอย่างเช่นคุณมีต้นไม้ผสมผสานกับภาพเคลื่อนไหว 8 เทพดา (ไม่ได้ใช้งานกับ 4 หลักและ 4 ทิศทางทแยงมุม) มี 2 ​​พารามิเตอร์ในทรีผสมนี้ - "แนวนอน" และ "แนวตั้ง" และเมื่อพิจารณาจากพารามิเตอร์ทั้งสองนี้ต้นไม้ผสมจะเป็นตัวกำหนดว่าจะเล่นภาพเคลื่อนไหวประเภทใด ขึ้นอยู่กับพารามิเตอร์ "แนวนอน" ต้นไม้ผสมผสานจะเลือกระหว่างภาพเคลื่อนไหวซ้าย / ขวาและพารามิเตอร์ "แนวตั้ง" จะตัดสินภาพเคลื่อนไหวบน / ล่าง จากนั้นเมื่อรวมกันคุณจะมีอนิเมชั่นทั้งหมด 8 ภาพที่มีเส้นทแยงมุม

ป้อนคำอธิบายรูปภาพที่นี่

มันค่อนข้างสับสนเช่นกันถึงแม้ว่า StackExchange จะไม่ชอบลิงก์ แต่ฉันจะลิงก์ วิดีโอตัวอย่างสั้น ๆ ที่ฉันทำ สังเกตส่วนบนขวาของหน้าจอ จุดสีเทาคือ "สถานะ" / ภาพเคลื่อนไหวและจุดที่ใช้งานอยู่คือจุดที่อยู่ใกล้กับจุดสีแดง ดังที่ได้กล่าวไว้ในตอนแรกมันมีความซับซ้อนมากยิ่งขึ้นและแต่ละอนิเมชั่นจะมีอิทธิพล / ความแข็งแกร่งตามระยะทางถึงจุดสีแดงทำให้เกิดการผสมผสานระหว่างอนิเมชั่นต่างๆ

จากภายนอกเพียงหนึ่งสถานะ (ผสมผสานต้นไม้) และเมื่อคุณใช้แนวคิดเดียวกันสำหรับการเดินและโจมตีคุณจะมีการเชื่อมโยง 3 รัฐเท่านั้น

ต้นไม้ Blend ถูกสร้างขึ้นด้วยการคลิกขวาบนพื้นที่ว่าง Animator สร้างสถานะ -> จาก New Blend Tree จากตรงนั้นทุกอย่างอยู่ในสารวัตร ด้วยการเลือกต้นไม้ผสมผสานคุณสามารถเลือกประเภทของต้นไม้ผสมผสาน (1D, 2D, ฯลฯ ) เพิ่มภาพเคลื่อนไหวจัดวางตำแหน่ง (สัมพันธ์กับค่าพารามิเตอร์) และเลือกพารามิเตอร์ควบคุม

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับต้นไม้ผสมต่อไปเป็นวิดีโอจากความสามัคคี - Unite 2016และความสามัคคีสอน


2

ปัญหาที่นี่คือคุณกำลังพยายามผูกทุกอย่างเข้าด้วยกันแทนที่จะใช้ทริกเกอร์เพื่อสลับระหว่าง idles คุณควรเลือกภาพเคลื่อนไหวที่ไม่ได้ใช้งานโดยใช้ if-else หรือชนิดเงื่อนไขตัวพิมพ์ของเงื่อนไข ฉันสร้างไดอะแกรมที่มีลักษณะค่อนข้างมาก (สมมติว่าหนึ่งในนั้นคือกรณีเริ่มต้น):

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลเพิ่มเติม:

ดูพารามิเตอร์ภาพเคลื่อนไหวเกี่ยวกับวิธีการตั้งค่าพารามิเตอร์เพื่อให้แอนิเมชั่นจดจำ, เครื่องรัฐสำหรับการรวมแอนิเมชั่นเข้าด้วยกัน, เครื่องพฤติกรรมของรัฐสำหรับวิธีการตรวจสอบตัวแปรที่คุณตั้งไว้


สวัสดีจอห์น แต่ฉันจะทำจริงได้อย่างไร เหตุใดฉันจึงต้องใช้ทริกเกอร์เพื่อสลับระหว่าง idles หรือสลับระหว่าง idles เลย? ฉันจะเลือกแอนิเมชั่นที่ไม่มีการใช้งานได้อย่างไรถ้าใช้ ในแผนภาพด้วยเหตุใดฉันจึงย้ายไปที่ idleleft แล้วไปทางซ้ายและไม่ทิ้งและไปที่ idleleft ที่รอการดำเนินการต่อไปหรือนี่ควรเป็นวิธีอื่น ๆ
Matas Vaitkevicius

@MatasVaitkevicius คุณสามารถตั้งค่าและตรวจสอบตัวแปรที่ส่วนท้ายหรือเริ่มต้นของภาพเคลื่อนไหว คุณสามารถสร้างแอนิเมชั่นเปล่า ๆ ที่ไม่ทำอะไรเลยนอกจากตรวจสอบเคสแล้วเปลี่ยนมันไปยังส่วนถัดไปหรือสร้างเลเยอร์นามธรรมออกมา ฉันได้รวมลิงค์ไปยังคู่มือเพื่อดูข้อมูลเพิ่มเติม
จอห์นแฮมิลตัน

ดังนั้นฉันจะทำอย่างไรถ้ามีพารามิเตอร์ที่จะเปลี่ยนการเปลี่ยนผ่าน? มีตัวอย่างที่ไม่เป็นกลไกที่คุณเชื่อมโยงเพียงแค่ทำคู่มือการเปลี่ยนแปลงเหมือนผมในคำถาม ....
Matas Vaitkevicius

@MatasVaitkevicius คุณควรค้นหาก่อน: gamedev.stackexchange.com/questions/103611/…
John Hamilton

แต่นี่เป็นวิธีที่ฉันทำ ทริกเกอร์ไฟของแอ็คชั่นและเริ่มต้นแอนิเมชั่นจากนั้นมันจะไม่ทำงานสำหรับทิศทางนั้น ... ตอนนี้สิ่งที่คุณกำลังพูด (ถ้าฉันเข้าใจคุณอย่างถูกต้อง) ว่าฉันทำได้หลังจากเคลื่อนไหวแทนการไม่ใช้งาน จะเลือกว่างที่เหมาะสมสำหรับฉัน ... แต่ฉันไม่ได้เห็นกลไกดังกล่าวที่ใดก็ได้คุณสามารถคัดลอกลงในคำตอบของคุณได้โปรด ...
Matas Vaitkevicius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.