สมมติว่าฉันมีสามชั้น: พื้นหน้าพื้นกลางและพื้นหลัง การใช้เลเยอร์ทั้งสามนี้เกี่ยวข้องกับการสร้างการเลื่อนพารัลแลกซ์อย่างไร
สมมติว่าฉันมีสามชั้น: พื้นหน้าพื้นกลางและพื้นหลัง การใช้เลเยอร์ทั้งสามนี้เกี่ยวข้องกับการสร้างการเลื่อนพารัลแลกซ์อย่างไร
คำตอบ:
แบ่งตำแหน่งของแต่ละเลเยอร์ด้วย "ระยะทาง" ที่คุณต้องการจากกล้อง
ตัวอย่างเช่น: สร้างคู่ของตัวแปรที่จะเป็นตัวแทนตำแหน่งกล้องและcameraX
cameraY
ตั้งค่าเหล่านี้ให้เท่ากับตำแหน่งของตัวละครของคุณอาจเพิ่มไปอีกเล็กน้อยในทิศทางของการเคลื่อนไหว
เลเยอร์หลักจะถูกวางตำแหน่งที่
mainLayer.x = -cameraX;
ชั้นกลางที่บางอย่างเช่น
middleLayer.x = -cameraX * 0.5;
และชั้นที่ไกล
farLayer.x = -cameraX * 0.2;
เปลี่ยนค่าคงที่ตามต้องการ
โดยทั่วไปคุณต้องการให้วัตถุเคลื่อนที่เร็วขึ้นยิ่งเข้าใกล้ 'กล้อง' วิธีการนำไปใช้นั้นขึ้นอยู่กับคุณ
ฉันกำหนดความลึกแต่ละชั้นของฉันและจากนั้นในขณะที่ฉันเลื่อนฉากสำหรับแต่ละชั้นฉันแบ่งการเลื่อนนั้นตามความลึกของชั้นเพื่อให้ชั้นที่อยู่ไกลออกไปเคลื่อนที่ช้าลง
เลเยอร์ที่ "ย้อนกลับต่อไป" จะต้องเลื่อนที่เศษส่วนของความเร็วของเลเยอร์พื้นหน้า ความเร็วครึ่งหมายถึงระยะทางสองเท่า ผลกระทบอื่น ๆ เช่นการย้อมสีเพื่อจำลองหมอก ฯลฯ อาจเพิ่มภาพลวงตา
วิธีที่ดีที่สุดในการทำเช่นนี้คือการทำให้สไปรต์เป็นล่ามป้ายโฆษณาในรูปแบบ 3 มิติ "การเล่นเกม" สามารถเกิดขึ้นได้ทั้งหมดบนเครื่องบินเดียวในขณะที่พื้นหลังและเบื้องหน้าสามารถวางไว้ใกล้หรือไกลกว่าในพื้นที่ 3 มิติ ด้วยวิธีดังกล่าวเอฟเฟกต์พารัลแลกซ์จะได้รับการจัดการให้กับคุณโดยที่คุณไม่ต้องเขียนโค้ดพิเศษ :-)
ทำการเลื่อนชั้นล่างโดยการลบออกจากตำแหน่งวาดชั้นกลางตามปกติและทำการเลื่อนชั้นบนสุดด้วยความเร็วของชั้นล่างหารด้วยสอง