2
เลื่อนกล้อง XNA 2d - ทำไมต้องใช้การแปลงเมทริกซ์?
ฉันกำลังทำเกมทดสอบที่ฉันต้องการให้เลื่อนระดับอย่างต่อเนื่อง ในการสร้างเอฟเฟกต์นี้ฉันได้สร้างคลาสกล้องที่เก็บตำแหน่งเวกเตอร์ 2 และทิศทาง Enum นอกจากนี้ยังมีวิธีการสาธารณะเพื่อ 'ย้าย' ซึ่งเพียงเปลี่ยนตำแหน่งในอัตราคงที่ จากนั้นฉันจะใช้ตำแหน่งนี้เมื่อวนลูปผ่านอาร์เรย์ของกระเบื้องเมื่อวาดภาพ ทั้งหมดนี้ทำงานได้ดี อย่างไรก็ตามฉันได้รับแจ้งว่าฉันควรใช้ Transform matrix เพื่อย้ายกล้องและฉันควรให้สิ่งนี้เมื่อฉันเริ่ม spritebatch ฉันสับสนเล็กน้อย a.) วิธีนี้ทำงานอย่างไร ราวกับว่าฉันจะให้มันก็ต่อเมื่อ spritebatch เริ่มต้นจะรู้ได้อย่างไรว่าจะเปลี่ยนตำแหน่งได้อย่างไร b.) ทำไมฉันยังต้องการตำแหน่งกล้องเมื่อฉันวนผ่านกระเบื้อง? ในขณะที่ฉันไม่สามารถทำงานได้ แต่ก็ไม่แปลกใจเลยที่ฉันไม่เข้าใจวิธีการทำงาน ขณะนี้ฉันกำลังพยายาม (โค้ดให้ติดตาม) กระเบื้องที่กำลังถูกเปลี่ยนแปลงซึ่งหมายถึงตำแหน่งของกล้องกำลังเปลี่ยนแปลง แต่ตำแหน่งของวิวพอร์ตยังคงไม่เปลี่ยนแปลง (เช่นที่จุดเริ่มต้นของกล้อง) ฉันจะขอบคุณคำแนะนำ / คำแนะนำเกี่ยวกับวิธีการใช้งาน กล้อง: class Camera { // The position of the camera. public Vector2 Position { get { return …