Bagaimana cara menggambar bagian lembar sprite secara manual?

9

Saya bekerja di Unity, dan saya menemukan bahwa animator tidak bekerja untuk apa yang saya coba lakukan, dalam permainan 2D saya. Saya ingin membuat animasi tertentu, menggunakan sprite sheet, dan dapat menggunakan kembali animasi yang sama dengan sprite lain yang memiliki ukuran dan dimensi yang sama dengan sel. Setelah beberapa penelitian, saya menemukan bahwa itu tidak mungkin.

Sebagai gantinya, saya mencoba membuat skrip animasi saya sendiri, tetapi saya tidak mengerti bagaimana cara memberitahu Unity untuk menggambar hanya sebagian dari sprite. Sesuatu seperti di XNA, di mana Anda hanya dapat membuat persegi panjang spesifik sprite menggunakan koordinat awal dan akhir.

Bagaimana cara menggambar bagian lembar sprite secara manual?

Shaun
sumber
3
Ini dimungkinkan di Unity tanpa menduplikasi data animasi, dengan sedikit hack. Secara efektif, Anda memainkan animasi A menggunakan spritesheetA, kemudian di LateUpdate Anda menukar setiap SpriteRenderer's Sprite dengan analognya dari spritesheetB. Ada video Unity tentang teknik ini; Saya akan mempostingnya sebagai jawaban jika saya dapat menemukannya nanti, dan menguraikan detailnya. Ini akan memungkinkan Anda menggunakan kekuatan penuh sistem animasi asli Unity tanpa harus menulis sendiri dari awal.
DMGregory
Anda harus mencoba Spine atau beberapa perangkat lunak animasi kerangka lainnya. Ini memiliki kemampuan skin yang memungkinkan Anda untuk mempertahankan animasi tulang yang sama, tetapi bertukar dan ganti skin sesuai kebutuhan. Saya pribadi menggunakan Spine karena sederhana, ada tutorial dan ia memiliki runtime kesatuan yang membuat semuanya super sederhana. Kelemahannya adalah itu membutuhkan biaya, tetapi versi dasar memberi Anda semua yang Anda butuhkan untuk membuat animasi. Versi pro hanya membuatnya lebih mudah dan lebih cepat.
Savlon
gunakan topeng jika Anda bekerja di UI
virtouso

Jawaban:

1

Saya pikir mungkin ada pendekatan yang lebih sederhana di mana Anda bisa melakukan ini, dan masih menggunakan Unity Mecanim untuk animasinya.

Langkah:-

1) Anda secara programatik dapat menetapkan sprite 2D tekstur dari gambar, dan karena ini adalah kisi, maka tidak akan sulit untuk melakukannya. Dalam jawaban berikut, pengguna telah membuat alat pengiris sprite sendiri dan disimpan ke dalam direktori (opsional lain simpan saja dalam sebuah variabel). Anda tidak perlu seluruh kode, cukup periksa fungsi GetSprites () dan Anda akan mendapatkan ide :)

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

2) Setelah Anda bisa melakukan itu, maka pertahankan Array sprite, yang Anda dapatkan dari langkah 1.

3) Sekarang Anda perlu membuat file anim dari sprite ini yang dapat dicolokkan ke mecanim. Untuk ini, Anda memerlukan fungsi Set Curve Unity (periksa tautan yang disediakan di bawah). Setelah Anda memiliki klipnya, apakah Anda ingin menyimpannya untuk digunakan di masa depan atau hanya menyimpannya dalam variabel untuk instance gim saat ini saja.

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

Semoga ini bisa menyelesaikan keraguan Anda :)

Pelampung Hash
sumber