Kebingungan tentang Ukuran Sprite di World Space (Unity)


11

Saya memiliki Sprite dengan resolusi 1080x1920. Dan saya mengatur Resolusi Tampilan Game juga ke 1080x1920. Apa yang saya pikirkan adalah bahwa sprite (1080x1920) harus sesuai dengan benar dalam Tampilan Kamera.

resolusi gambar adalah 1080x1920

Tapi ketika saya seret sprite itu, sprite diperbesar dan keluar dari tampilan kamera.

tampilan layar, sprite keluar dari kamera

Penyesuaian apa yang harus saya lakukan untuk memastikan sprite ini 100% pas dalam tampilan kamera. Saya bisa mengubah Skala Transform Sprite. Tapi itu akan menimbulkan masalah karena saya punya banyak sprite lain untuk ditangani dan mereka harus proporsional.


Apakah Anda berbicara tentang sprite 3D? Atau UI 2D sprite?
TomTsagk

A 2D Sprite .....
Faizan Khan

Jawaban:


19

Ini masuk akal ketika Anda ingat bahwa sprite tidak hanya dibasahi pixel-for-pixel ke layar Anda (yang akan membuatnya menjadi mimpi buruk untuk mendapatkan tampilan yang sama di layar dengan resolusi yang berbeda, karena mereka semua memotong karya Anda secara berbeda) , tetapi mereka adalah bagian dari dunia 3D Anda dalam sistem koordinat gameplay agnostik perangkat yang dapat Anda kontrol.

Seperti semua hal lain di dunia gameplay itu, bagian yang akhirnya memetakan ke layar ditentukan oleh cara Anda mengkonfigurasi objek Kamera Anda.

Jadi, ada empat bagian yang menentukan seberapa besar sprite Anda ditampilkan:

  1. The Resolusi sumber dari sprite.

  2. Pengaturan Pixel per Unit dipilih dalam inspektur pengaturan impornya.

    Ini menetapkan faktor konversi untuk mengubah ukuran dari piksel dalam ruang tekstur ke unit di ruang dunia (mis. Ruang tempat semua gameplay & perhitungan fisika Anda terjadi)

    Height in World Unit = Tinggi Sumber dalam Piksel / Piksel per Unit

    Anda biasanya harus memilih nomor ini untuk menyelaraskan dengan beberapa metrik gameplay yang relevan di game Anda. misalnya. jika Anda memiliki kotak petak dengan spasi 135 piksel, memilih Piksel per Unit = 135 akan membuat setiap sel dari grid Anda tepat 1 unit selebar dalam sistem koordinat gim, membuat perhitungan Anda lebih nyaman.

  3. The ukuran ortografi dari kamera Anda.

    (Atau, jika menggunakan kamera perspektif, kombinasi bidang pandang kamera dan kedalaman dari kamera ke sprite Anda)

    Ini menentukan berapa banyak unit dunia Anda yang dapat dilihat kamera Anda, mulai dari tengah tampilan hingga tepi atas.

    Bagian Tinggi Kamera yang Diduduki = Tinggi di Unit Dunia / (2 * Ukuran Kamera Ortho)

    Jadi jika kita menjalankan dengan nilai 135 PPU, 1920 sprite tinggi akan menjadi 14.222222 unit di dunia, artinya kita akan memerlukan kamera dengan ketinggian 7.111111 untuk menangkap semuanya dari atas ke bawah (karena ketinggian kamera diukur dari tengah keluar)

  4. The ukuran piksel resolusi layar jendela / output.

    Secara default, tampilan kamera akan mengisi layar secara vertikal, jadi jika layar / jendela Anda berubah ketinggian, potongan vertikal adegan Anda tidak akan berubah (objek di tepi atas atau tepi bawah layar tidak akan bergerak atau dipotong, seluruh adegan hanya akan menjadi lebih besar atau lebih kecil untuk mengisi ketinggian yang tersedia).

    Jadi, jumlah unit dunia yang dapat dilihat kamera Anda dari atas ke bawah ke jumlah piksel di jendela / layar Anda dari atas ke bawah.

    Output Pixel Size = Porsi Tinggi Kamera yang Diduduki * Ketinggian Jendela dalam Pixel

    Jadi jika layar kita memiliki tinggi 1920 piksel, dan sumber kita sprite benar-benar memenuhi pandangan kamera, maka itu akan menjadi output di seluruh piksel layar 1920 dalam keselarasan 1: 1.


Saya benar-benar berterima kasih kepada Anda atas jawaban terperinci Anda !!!!
Faizan Khan

3
Saya senang Anda menemukannya berguna! Saya telah menulis beberapa Tanya Jawab tentang bekerja dengan ukuran sprite di Unity yang mungkin juga membantu: memilih ukuran sprite , mencocokkan penampilan sprite berukuran berbeda , pada scaling pixel art
DMGregory

1
Terima kasih .... Saya juga mengikuti Anda di Twitter ... Saya merasa sangat senang telah berinteraksi dengan beberapa orang yang bekerja di UbiSoft :)
Faizan Khan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.