Saya mencoba menggambar tekstur selaras dengan badan fisika ini yang asal sistem koordinatnya ada di tengah layar. (XNA) Spritebatch memiliki asal default ditetapkan ke sudut kiri atas. Saya mendapatkan tekstur untuk diposisikan dengan benar, tetapi saya perhatikan tekstur saya terbalik secara vertikal. Yaitu, tekstur panah yang menunjuk ke Atas, ketika menunjukkan poin ke bawah. Saya tidak yakin di mana saya salah dengan matematika.
Pendekatan saya adalah untuk mengkonversi semua dalam satuan meter fisik dan menggambar sesuai.
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();
dimana Paddle :: Draw terlihat seperti:
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);
Matriks proyeksi ortografis tampak baik bagi saya, tetapi saya jelas melakukan sesuatu yang salah di suatu tempat! Dapatkah seseorang tolong bantu saya mencari tahu apa yang saya lakukan salah di sini?
Terima kasih
scale
negatif? Apakah Anda melakukan sesuatu yang spesial di vertex / pixel shader untuk efek yang Anda gunakan (khususnya bagaimana Anda memanipulasi / menggunakan koordinat tekstur?) Juga jika Anda menggunakan XNA4 jangan Anda ingin meneruskan efek ke Mulai () panggilan bets, daripada mencoba menjalankannya secara manual?