Welcome!, y a leer mucho como yo :D
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Páginas1
#1
Principiantes / Re: Hola a todos/as, una nueva persona por estos lares
30 de Agosto de 2011, 09:02:45 PM #2
XNA / Re: Ayuda, Camara 2D Xna
19 de Agosto de 2011, 07:20:49 PM
Oks, muchas gracias a los dos entre sus comentarios mas un poco mas de toqueteo ya he comprendido x fin como funciona.
Saludos!
Saludos!
#3
XNA / Re: Ayuda, Camara 2D Xna
19 de Agosto de 2011, 10:38:55 AMCitar2) Luego se usa la camara en SpriteBatch, para transformar la posicion del sprite a coordenadas de pantalla
¿Entonces lo que se consigue metiendole la "camara" (matriz) al begin() es que dibuje los objetos en pantalla en la posicion obtenida mediante la multiplicacion: (posicion del sprite) * (matriz)?
#4
XNA / Ayuda, Camara 2D Xna
19 de Agosto de 2011, 12:10:45 AM
Hola, me presento, llevo bastante tiempo leyendo vuestro foro y recomendandolo pero unca me habia dado por registrarme y participar dado que no considero que tenga los suficientes conocimientos para ello.
No soy de escribir post pero sta vez necesito su ayuda / sabiduria :), he buscado en google y por todos lados pero no consigo comprender el problema que me ataña.
Estoy aprendiendo xna y quiero crear una camara 2D que para que se vaya viendo el juego conforme avanzas, decirles que ya he probado otras alternativas como la de mover el fondo y que de la sensacion de avance, pero quiero aprender todas las posibles y esta es otra de ellas.
He aqui el codigo que intento entender:
No consigo entender como se hace funcionar la camara con este codigo por mucho que toquetee y busque, ¿en que parte del codigo entra en juego la aparicion de la camara y su modificacion?
1- Supongo que en esa parte de codigo esta la clave para entender como se dibuja, como dibuja o como funciona la camara XD, pero no lo consigo entender, he mirado la api de ms y tmp me aclara.
2-La "idea" que tengo es que al pulsar una tecla actualizamos la posicion de la camara, vale... pero ¿para que, si despues en Draw no dibujamos ninguna camara.?,.
Gracias de antemano, y Saludos!
No soy de escribir post pero sta vez necesito su ayuda / sabiduria :), he buscado en google y por todos lados pero no consigo comprender el problema que me ataña.
Estoy aprendiendo xna y quiero crear una camara 2D que para que se vaya viendo el juego conforme avanzas, decirles que ya he probado otras alternativas como la de mover el fondo y que de la sensacion de avance, pero quiero aprender todas las posibles y esta es otra de ellas.
He aqui el codigo que intento entender:
Código (csharp) [Seleccionar]
namespace camara_y_colision
{
public class Game1 : Microsoft.Xna.Framework.Game
{
Texture2D animacion;
Texture2D fondo;
Matrix camara;
int posCamX;
int posCamY;
Vector2 posicionSPRITE;
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
posicionSPRITE = new Vector2(400, 500);
posCamX = 400;
posCamY = 500;
//BUFFER DE LA PANTALLA
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
animacion= Content.Load<Texture2D>("img/animacion");
fondo = Content.Load<Texture2D>("img/fondo1");
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (Keyboard.GetState().IsKeyDown(Keys.Left))
{
if (posicionSPRITE.X >= 0)
posicionSPRITE.X -= 5;
if ((posicionSPRITE.X >= 400) && (posicionSPRITE.X <= 800))
posCamX -= 5;
}
if (Keyboard.GetState().IsKeyDown(Keys.Right))
{
if (posicionSPRITE.X <= 1200 - seta.Height)
posicionSPRITE.X += 5;
if ((posicionSPRITE.X <= 800) && (posicionSPRITE.X >= 400))
posCamX += 5;
}
if (Keyboard.GetState().IsKeyDown(Keys.Up))
{
if (posicionSPRITE.Y >= 0)
posicionSPRITE.Y -= 5;
if ((posicionSPRITE.Y >= 300) && (posicionSPRITE.Y <= 500))
posCamY -= 5;
}
if (Keyboard.GetState().IsKeyDown(Keys.Down))
{
if (posicionSPRITE.Y < 800 - animacion.Height)
posicionSPRITE.Y += 5;
if ((posicionSPRITE.Y <= 500) && (posicionSPRITE.Y >= 300))
posCamY += 5;
}
camara = Matrix.CreateTranslation(new Vector3(graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight / 2, 0)) * Matrix.CreateTranslation(new Vector3(-posCamX, -posCamY, 0));
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate,SaveStateMode.SaveState, camara);
spriteBatch.Draw(fondo, Vector2.Zero, Color.White);
spriteBatch.Draw(animacion, posicionSPRITE, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
No consigo entender como se hace funcionar la camara con este codigo por mucho que toquetee y busque, ¿en que parte del codigo entra en juego la aparicion de la camara y su modificacion?
CitarspriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate,SaveStateMode.SaveState, camara);
1- Supongo que en esa parte de codigo esta la clave para entender como se dibuja, como dibuja o como funciona la camara XD, pero no lo consigo entender, he mirado la api de ms y tmp me aclara.
2-La "idea" que tengo es que al pulsar una tecla actualizamos la posicion de la camara, vale... pero ¿para que, si despues en Draw no dibujamos ninguna camara.?,.
Gracias de antemano, y Saludos!
Páginas1