ฉันจะวาดส่วนของแผ่นสไปรต์ด้วยตนเองได้อย่างไร


9

ฉันทำงานใน Unity และฉันพบว่าอนิเมเตอร์ไม่ทำงานในสิ่งที่ฉันพยายามทำในเกม 2D ของฉัน ฉันต้องการสร้างภาพเคลื่อนไหวที่เฉพาะเจาะจงโดยใช้แผ่นงานสไปรต์และสามารถนำภาพเคลื่อนไหวเดิมมาใช้ซ้ำกับสไปรต์อื่น ๆ ที่มีขนาดและมิติเท่ากันโดยเซลล์ หลังจากการวิจัยบางอย่างฉันพบว่ามันเป็นไปไม่ได้

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

ฉันจะวาดส่วนของแผ่นสไปรต์ด้วยตนเองได้อย่างไร


3
สิ่งนี้เป็นไปได้ใน Unity โดยไม่ต้องทำซ้ำข้อมูลภาพเคลื่อนไหวด้วยการแฮ็คเล็กน้อย คุณเล่นแอนิเมชั่น A โดยใช้ spritesheetA แล้วใน LateUpdate คุณสลับ SpriteRenderer's Sprite แต่ละตัวไปเป็นอะนาล็อกจาก spritesheetB มีวิดีโอเอกภาพในเทคนิคนี้ ฉันจะโพสต์มันเป็นคำตอบถ้าฉันสามารถหาได้ในภายหลังและอธิบายรายละเอียดอย่างละเอียด สิ่งนี้จะช่วยให้คุณใช้พลังเต็มที่ของระบบภาพเคลื่อนไหวพื้นเมืองของ Unity โดยไม่ต้องเขียนเองตั้งแต่ต้น
DMGregory

คุณควรลอง Spine หรือซอฟต์แวร์ภาพเคลื่อนไหวโครงกระดูกอื่น ๆ มันมีความสามารถของสกินที่ช่วยให้คุณรักษาภาพเคลื่อนไหวของกระดูกเหมือนกัน แต่เปลี่ยนและเปลี่ยนสกินได้ตามต้องการ ฉันเองใช้กระดูกสันหลังเพราะมันง่ายมีบทเรียนและมีรันไทม์ความสามัคคีที่ทำให้ทุกอย่างง่ายสุด ๆ ข้อเสียคือมันใช้เงิน แต่รุ่นพื้นฐานให้ทุกสิ่งที่คุณต้องการในการสร้างภาพเคลื่อนไหว รุ่นโปรทำให้ง่ายขึ้นและเร็วขึ้น
Savlon

ใช้หน้ากากถ้าคุณทำงานใน UI
virtouso

คำตอบ:


1

ฉันคิดว่าอาจมีวิธีที่ง่ายกว่าซึ่งคุณสามารถทำได้และยังคงใช้ Unity Mecanim สำหรับภาพเคลื่อนไหว

ขั้นตอน: -

1) คุณสามารถกำหนด sprites 2D บนพื้นผิวโดยทางโปรแกรมจากรูปภาพและเนื่องจากเป็นตารางจึงไม่ยากที่จะทำเช่นนั้น ในคำตอบต่อไปนี้ผู้ใช้สร้างสไลเดอร์สไลเดอร์ของตนเองและบันทึกลงในไดเรกทอรี (ไม่จำเป็นต้องบันทึกไว้ในตัวแปร) คุณไม่จำเป็นต้องใช้รหัสทั้งหมดเพียงแค่ตรวจสอบฟังก์ชั่น GetSprites () และคุณจะได้รับแนวคิด :)

http://answers.unity3d.com/questions/576799/coding-my-own-auto-slicer-getting-islands-of-pixel.html

2) เมื่อคุณสามารถทำเช่นนั้นได้แล้วให้รักษาอาร์เรย์ของสไปรต์ซึ่งคุณได้รับจากขั้นตอนที่ 1

3) ตอนนี้คุณต้องสร้างไฟล์ภาพเคลื่อนไหวของสไปรต์เหล่านี้ซึ่งสามารถเสียบเข้ากับ mecanim สำหรับสิ่งนี้คุณต้องมีฟังก์ชั่น Set Curve (ตรวจสอบลิงค์ด้านล่าง) เมื่อคุณได้คลิปมาแล้วคุณจะบันทึกไว้สำหรับใช้ในอนาคตหรือเพียงแค่เก็บไว้ในตัวแปรสำหรับเกมปัจจุบันเท่านั้น

http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

หวังว่านี่จะช่วยแก้ไขข้อสงสัยของคุณ :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.