Bagaimana cara memvisualisasikan lapisan paralaks dalam editor level?

9

Saya membuat game 2D di Unity, tetapi ini akan berlaku untuk semua mesin game 2D.

Jika saya menerapkan multiplane parallax dengan kamera ortografis, sulit untuk meletakkan sprite lapisan latar belakang dan tahu di mana mereka akan sejajar dengan sprite di lapisan lain.

Insting pertama saya adalah menggunakan beberapa kamera, satu untuk setiap lapisan, dan menurunkan kecepatan pergerakan kamera untuk lapisan latar belakang. Ini menghindari keharusan untuk memindahkan semua sprite latar belakang setiap frame. Masalahnya adalah bahwa lapisan yang bergerak dengan kecepatan setengah akan memakan setengah ruang lapisan utama saat dilihat di editor. Jadi sulit untuk mengetahui di mana menempatkan sprite saat Anda meletakkan permainan. Masalahnya semakin buruk secara eksponensial saat Anda menambah jumlah lapisan.

Bagaimana saya mengatasi ini? Saya telah mencoba mengubah skala lapisan dengan kecepatan gerakan yang dimaksudkan saat bekerja dengan mereka di editor. Itu menempatkan semua sprite latar belakang di lokasi yang benar relatif terhadap lapisan utama, tetapi mereka sangat terdistorsi.

Apakah saya hanya perlu menyedotnya dan terus-menerus beralih antara editor dan game yang sedang berjalan untuk menguji latar belakang paralaks?

TenFour04
sumber
4
Ketika saya melakukan permainan seperti itu, saya baru saja membuatnya sehingga Anda bisa menyeret kamera ke dalam editor dan Anda bisa melihat bagaimana paralaks bekerja. Saya tidak yakin bagaimana secara khusus melakukan sesuatu seperti itu di Unity.
Tetrad

Jawaban:

1

Saya tidak terbiasa dengan Unity, jadi saya tidak dapat membantu Anda dengan spesifik, tetapi sepertinya Anda perlu menerapkan alat GUI untuk menyempurnakan nilai-nilai tersebut selama waktu berjalan dengan, katakanlah, satu set slider atau bidang numerik. Akan sangat sederhana untuk menerapkan bidang untuk mengubah nilai apa pun yang Anda tentukan (skala, kecepatan, dll) selama waktu berjalan yang memberi Anda umpan balik langsung. Untuk penempatan, Anda dapat menggunakan bidang atau penempatan manual dengan menyeret klik (yang mungkin sedikit lebih sulit untuk diterapkan, tetapi jauh lebih intuitif).

Ini memberi Anda kontrol penuh tanpa kompilasi dan menjalankan kode untuk setiap bagian kecil dari perubahan. Ketika Anda akhirnya tiba pada tampilan dan perasaan yang membuat Anda bahagia, gunakan nilai-nilai itu dalam daftar konstanta Anda. Jika ini terlalu menakutkan karena jumlah variabel yang Anda edit (katakanlah, banyak lokasi sprite di berbagai level), saya ingin menerapkannya dalam editor level, saya bayangkan, dengan fungsionalitas penyesuaian manual yang sama tetapi dengan hasil membuat dan menyimpan data yang disesuaikan.

Attackfarm
sumber
Ya, sepertinya menggunakan editor level adalah cara terbaik untuk melakukannya, apakah itu mengkode Anda sendiri, atau dalam kasus saya dengan Unity, mengaturnya agar berfungsi dengan editor yang ada. Saya mengkodekan pengaturan paralax saya dengan objek kamera yang terpisah untuk setiap lapisan, dan masing-masing kamera dapat dipindahkan secara relatif terhadap kamera utama setiap frame. Kemudian gunakan [ExecuteInEditMode] untuk membuat mereka memperbarui bahkan ketika kamera utama diseret dalam editor. Saya hanya perlu ingat untuk hanya memindahkan kamera utama secara langsung.
TenFour04
1

Sebuah ide: Saya akan berpikir kamera untuk lapisan depan sudah cukup. Menempatkan sprite jauh dari yang ada di bidang z, dan menyamakan jarak memberi Anda sebagian kecil untuk memindahkan lapisan belakang itu.

Misalnya, jarak objek 10 dari kamera depan bergerak 1/10 di lapisan latar belakang. Objek jarak 2, akan bergerak 1/2 di lapisannya masing-masing, dll.

Jason Coombes
sumber