Làm cách nào để triển khai cuộn parallax trong 2D?


Câu trả lời:


20

Chia vị trí của mỗi lớp cho khoảng cách mà bạn muốn nó có từ máy ảnh.

Ví dụ: Tạo một vài biến để thể hiện vị trí camera cameraXcameraY. Đặt những cái này bằng với vị trí của nhân vật của bạn, có thể thêm vào một chút phụ theo hướng di chuyển.

Lớp chính sẽ được định vị tại

mainLayer.x = -cameraX;

lớp giữa ở một cái gì đó như

middleLayer.x = -cameraX * 0.5;

và lớp xa tại

farLayer.x = -cameraX * 0.2;

Thay đổi hằng số khi cần thiết.


3
Những gì Iain đã nói, cộng với tôi lấy "hệ số thị sai" (1, 0,5 và 0,2 trong mã của Iain) và biến nó thành một tham số mô tả các lớp của tôi, theo cách đó tôi có thể điều chỉnh độ tinh tế thị sai (hoặc trong thời gian chạy).
Troy Gilbert

6

Về cơ bản, bạn muốn các đối tượng di chuyển nhanh hơn, chúng càng ở gần 'camera'. Làm thế nào bạn thực hiện đó là tùy thuộc vào bạn.

Tôi chỉ định cho mỗi lớp của mình một độ sâu, và sau đó khi tôi cuộn cảnh, với mỗi lớp tôi chia cuộn đó theo độ sâu của lớp, để các lớp xa hơn di chuyển chậm hơn.


5

Một lớp "lùi xa hơn" sẽ cần cuộn ở một phần tốc độ của lớp nền trước. Một nửa tốc độ ngụ ý gấp đôi khoảng cách. Các hiệu ứng khác như pha màu để mô phỏng sương mù, v.v., cũng có thể thêm vào ảo ảnh.


1

Cách tốt nhất để làm điều này là chỉ đơn giản là hiển thị các họa tiết dưới dạng các hình tứ giác trong 3D. "Trò chơi" có thể xảy ra tất cả trên một mặt phẳng, trong khi nền và tiền cảnh có thể được định vị gần hơn hoặc xa hơn trong không gian 3d. Bằng cách đó, hiệu ứng thị sai được xử lý cho bạn mà bạn không phải thực hiện bất kỳ mã hóa đặc biệt nào :-)


3
Nếu bạn làm điều đó, bạn phải mở rộng các góc xa của mình để bù cho tỷ lệ khoảng cách hoặc thiết lập một ma trận chiếu không áp dụng bất kỳ phối cảnh nào. Có thể dễ dàng hơn để dịch các quads mình.
khoan hồng

0

Tạo cuộn lớp dưới cùng bằng cách trừ đi vị trí của nó, vẽ lớp giữa như bình thường và làm cho lớp trên cùng cuộn với tốc độ của lớp dưới cùng chia cho hai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.