Bagaimana cara menerapkan penggiliran paralaks dalam 2D?

21

Misalkan saya memiliki tiga lapisan: latar depan, latar-menengah dan latar belakang. Apa yang terlibat dalam menggunakan tiga lapisan ini untuk membuat scrolling paralaks ?

Bryan Denny
sumber

Jawaban:

20

Bagilah posisi setiap layer dengan "jarak" yang Anda inginkan dari kamera.

Sebagai contoh: Buat beberapa variabel untuk mewakili posisi kamera, cameraXdan cameraY. Atur ini untuk menyamakan posisi karakter Anda, mungkin menambahkan sedikit ekstra ke arah gerakan.

Lapisan utama hanya akan diposisikan di

mainLayer.x = -cameraX;

lapisan tengah pada sesuatu seperti

middleLayer.x = -cameraX * 0.5;

dan lapisan paling jauh di

farLayer.x = -cameraX * 0.2;

Ubah konstanta sesuai kebutuhan.

Iain
sumber
3
Apa yang dikatakan Iain, ditambah lagi saya mengambil "faktor paralaks" (1, 0,5 dan 0,2 dalam kode Iain) dan menjadikannya parameter yang menggambarkan lapisan saya, dengan cara itu saya dapat menyesuaikan kehalusan paralaks (atau saat runtime).
Troy Gilbert
6

Pada dasarnya Anda ingin benda bergerak lebih cepat, semakin dekat ke 'kamera'. Bagaimana Anda menerapkannya, itu terserah Anda.

Saya menetapkan masing-masing lapisan saya kedalaman, dan kemudian ketika saya menggulir adegan, untuk setiap lapisan saya membagi gulungan itu dengan kedalaman lapisan, sehingga lapisan yang lebih jauh bergerak lebih lambat.

Kevin Laity
sumber
5

Lapisan yang "lebih jauh ke belakang" akan perlu menggulir di sebagian kecil dari kecepatan lapisan latar depan. Setengah kecepatan menyiratkan dua kali lipat jarak. Efek lain seperti pewarnaan untuk mensimulasikan kabut, dll, mungkin juga menambah ilusi.

Karantza
sumber
1

Cara terbaik untuk melakukan ini adalah dengan hanya membuat sprite sebagai paha billboarded dalam 3D. "Gameplay" dapat terjadi semua dalam satu pesawat, sedangkan latar belakang dan latar depan dapat diposisikan lebih dekat atau lebih jauh dalam ruang 3d. Dengan begitu, efek paralaks ditangani untuk Anda tanpa Anda harus melakukan pengkodean khusus :-)

Joel Martinez
sumber
3
Jika Anda melakukannya, Anda harus meningkatkan quads jauh Anda untuk mengkompensasi penskalaan jarak, atau mengatur matriks proyeksi yang tidak menerapkan perspektif apa pun. Mungkin lebih mudah menerjemahkan sendiri paha depan.
murah hati
0

Buat gulir lapisan bawah dengan mengurangi dari posisinya, gambar lapisan tengah seperti biasa, dan buat gulir lapisan atas dengan kecepatan lapisan bawah dibagi dua.

Sam
sumber