Tôi đang cố gắng vẽ họa tiết phù hợp với cơ thể vật lý này có nguồn gốc hệ tọa độ nằm ở trung tâm của màn hình. (XNA) Spritebatch có nguồn gốc mặc định được đặt ở góc trên cùng bên trái. Tôi có kết cấu được định vị chính xác, nhưng tôi nhận thấy kết cấu của tôi bị đảo ngược theo chiều dọc. Đó là, một kết cấu mũi tên chỉ lên, khi kết xuất điểm xuống. Tôi không chắc mình sẽ sai môn toán ở đâu.
Cách tiếp cận của tôi là chuyển đổi mọi thứ theo đơn vị mét vật lý và vẽ theo.
Matrix proj = Matrix.CreateOrthographic(scale * graphics.GraphicsDevice.Viewport.AspectRatio, scale, 0, 1);
Matrix view = Matrix.Identity;
effect.World = Matrix.Identity;
effect.View = view;
effect.Projection = proj;
effect.TextureEnabled = true;
effect.VertexColorEnabled = true;
effect.Techniques[0].Passes[0].Apply();
SpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, DepthStencilState.Default, RasterizerState.CullNone, effect);
m_Paddles[1].Draw(gameTime);
SpriteBatch.End();
trong đó Paddle :: Draw trông giống như:
SpriteBatch.Draw(paddleTexture,
mBody.Position,
null,
Color.White,
0f,
new Vector2(16f, 16f), // origin of the texture
0.1875f, SpriteEffects.None, // width of box is 3*2 = 6 meters. texture is 32 pixels wide. to make it 6 meters wide in world space: 6/32 = 0.1875f
0);
Ma trận chiếu chính tả có vẻ tốt với tôi, nhưng rõ ràng tôi đang làm gì đó sai ở đâu đó! Ai đó có thể vui lòng giúp tôi tìm ra những gì tôi đang làm sai ở đây?
Cảm ơn
scale
tiêu cực? Bạn có làm gì đặc biệt trong trình tạo bóng đỉnh / pixel cho hiệu ứng bạn đang sử dụng không (cụ thể là cách bạn thao tác / sử dụng tọa độ kết cấu?) Ngoài ra nếu bạn đang sử dụng XNA4, bạn không muốn truyền hiệu ứng vào Bắt đầu cuộc gọi () của đợt, thay vì gọi bằng tay?