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






Te quedó muy bien el efecto jona
y la explicación muy buena, buen trabajo!!
muy wenoooo el efecto jona se pasooo!!
mui weno el efecto sprite 2.0!!