กล้องสำหรับเกม 2.5D
ฉันหวังว่าบางคนสามารถอธิบายสิ่งนี้กับฉันได้เหมือนฉันอายุ 5 ขวบเพราะฉันดิ้นรนกับสิ่งนี้เป็นเวลาหลายชั่วโมงและไม่สามารถเข้าใจสิ่งที่ฉันทำผิดได้ ฉันเขียนCameraชั้นเรียนสำหรับเกม 2.5D ของฉัน ความตั้งใจคือการสนับสนุนโลกและพื้นที่หน้าจอเช่นนี้: กล้องเป็นสีดำด้านขวา แกน + Z เลื่อนขึ้นด้านบนของภาพโดยให้ -Z ชี้ลง อย่างที่คุณเห็นทั้งอวกาศโลกและพื้นที่จอภาพมี (0, 0) ที่มุมบนซ้าย ฉันเริ่มเขียนการทดสอบหน่วยเพื่อพิสูจน์ว่ากล้องของฉันทำงานได้ตามที่คาดไว้และนั่นคือสิ่งที่เริ่มแปลก ... การทดสอบของฉันพล็อตพิกัดในโลกมุมมองและพื้นที่หน้าจอ ในที่สุดฉันจะใช้การเปรียบเทียบภาพเพื่อยืนยันว่าถูกต้อง แต่สำหรับตอนนี้การทดสอบของฉันเพิ่งแสดงผลลัพธ์ ตรรกะการเรนเดอร์ใช้Camera.ViewMatrixในการแปลงพื้นที่ของโลกเพื่อดูพื้นที่และCamera.WorldPointToScreenเพื่อแปลงพื้นที่โลกเป็นพื้นที่หน้าจอ นี่คือตัวอย่างทดสอบ: [Fact] public void foo() { var camera = new Camera(new Viewport(0, 0, 250, 100)); DrawingVisual worldRender; DrawingVisual viewRender; DrawingVisual screenRender; this.Render(camera, out worldRender, out viewRender, …