3. Rotacion de sprite 2.0

2 05 2008

hola en el anterior tema se hablo de como rotar un sprite ,pero ahi algo que nohabia podido hacer , en como rotar un sprite y q segun el angulo de rotacion , el avioncete avanzara en esa direccion, bueno gracias a un amigo de xna community pude hacerlo, en esto ahi que tomar en cuenta material de computacion grafica, hasta el momento no sabia nada de ello, pero es una rama de ingeneria muy interesante para todos los que quereis aprender manipulaciones graficas tanto para 2d y 3d, lo que nosotros haremos es materia de transformaciones 2d.

protected void teclado(GameTime gameTime)
{
   KeyboardState estadoTeclado = Keyboard.GetState();
   Keys[] teclapulsada = estadoTeclado.GetPressedKeys();

    foreach (Keys tecla in teclapulsada)
    {
      if (tecla == Keys.Left)
      {
      rotacion -= ((float)gameTime.ElapsedGameTime.TotalSeconds) * 3f;
      }
       if (tecla == Keys.Right)
       {
        rotacion += ((float)gameTime.ElapsedGameTime.TotalSeconds) * 3f;
        }
        if (tecla == Keys.Up)
        {
         Vector2 VelocityAdd = Vector2.Zero;
       //calculamos la direccion de hacia la que apunta la avioneta

         VelocityAdd.X = (float)Math.Sin(rotacion);
         VelocityAdd.Y = -(float)Math.Cos(rotacion);
         velocidad += VelocityAdd;
         }
         if (tecla == Keys.Escape)
         {
         this.Exit();
         }
       }
       //le sumamos el vector de velocidad calculado
       posicionNave += velocidad;
    //Acemos que la velocidad disminulla poco a poco para
       simular la desaceleración
          velocidad *= 0.95f;
        }

Anteriormente habia explicado que valores vajo 1 osea valores flotantes era cuando el avionzete, giraba hacia derecha, ahora lo que hacemos es obtener ese valor y guardarlo en un vector cuyos valores esten en vacio (Vector2 VelocityAdd = Vector2.Zero;) , de nuestro vector obtenemos 2 valores: el seno y coseno ,ontonces tenemos:

VelocityAdd.X = (float)Math.Sin(rotacion);
VelocityAdd.Y = -(float)Math.Cos(rotacion);

que seno tiene rotacion? que coseno tiene rotacion? lo obtenemos de la funcion Math.sin y Math.cos,
desde el punto de origen, nuestro punto de origen que es el vector velocityAdd.

y donde P(x,y) es nuestro valor obtenido, osea obtenemos nuestro valor y se lo pasamos al vector velocityAdd, luego el valor de velocityAdd se lopasamos al vector velocidad y luego al vector posicion nave para que esta se mueva , y he la ciencia de esta rotacion2d.

Supongamos que nos pocicionamos en el angulo 40 , calculamos su seno y su coseno luego nuestra velocidad quedaria algo asi :en seno 0.642 y coseno 0.766 , ontonces pasamos los valores a velocityAdd, velocityAdd(0.642,0.766) aumentando en 1++ con el vector velocidad y luego a posicion nave.

aps otro detalle , velocidad * = 0.95f, esta muy bien esto para hacer deseleraciones no tan bruscas y que vayan de a poco ( tenemos un contador multiplo de numeros flotantes que hacen llegar a un valor 0).

bueno creo q me alarge un poco , si no se esta entendiendo enviarme un post, y asi podre ver que es lo queno se entiende, ya aqui como siempre me despido con mi video en youtube xd, esta ves de nightwish

y los archivos.

rar


Acciones

Información

3 respuestas

2 05 2008
David

Te quedó muy bien el efecto jona ;) y la explicación muy buena, buen trabajo!!

26 10 2008
poly

muy wenoooo el efecto jona se pasooo!!

26 10 2008
Poly

mui weno el efecto sprite 2.0!!

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Seguir

Get every new post delivered to your Inbox.