Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2013, 05:50
phyronx
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años, 8 meses
Puntos: 3
Problema de angulos

Buenas,

Primero excusarme si era mejor publicarlo en html5, ya que hago uso del canvas.

Estoy intentando crear un juego, un tio que se mueve segun la posicion del raton, i dispara a sus enemigos, girando 360 grados.

El problema esque debo tener un error con el angulo, o no entiendo bien el porque, si disparo hacia arriba y hacia abajo, lo k seria cerca del grado 0 y del grado 180, lo que me hace es disparar hacia atras.

Mejor hos pongo el codigo que utilizo:

Código Javascript:
Ver original
  1. //ESTA ES LA FORMULA DE LA RECTA DADO DOS vectores
  2. //al clickar con el raton recojo su posicion, y la del tio, y al tener 2 puntos
  3. //puedosaber la formula de la recta.
  4. //por cada vuelta, sumo o resto 5 a 'x', y vuelvo a recojer la x segun esaa x.
  5.  
  6. var yb = ytio+(((yraton-ytio)/(xraton-xtio))*(bala.getX()-xtio));
  7.      
  8.  
  9.      bala.setY(yb);
  10.  
  11.  
  12. //si el grado es superior de 180 dispara hacia el otro lado.
  13.  
  14.       if (parseInt(grados) > 180) {
  15.  
  16.        bala.setX(bala.getX()-5);
  17.  
  18.       }else{
  19.  
  20.        
  21.         bala.setX(bala.getX()+5);
  22.  
  23.       }


La variable grados la saco de la rotacion del personaje.

Tengo el 'juego' colgado para que podais ver el error, mantened pulsado el raton para disparar, y 'wsad', para mover. Si el disparo se hacerca arriba o abajo vereis el error.

"gclimb.com/fire"

No sabia como crear la trayectoria de la bala, y esto me lo monte yo con lo que sabia, si sabeis otra forma de generar mejor la trayectoria..

GRacias por adelantado!



PD: Hos pongo como saco los grados:

Código Javascript:
Ver original
  1. var theta = Math.atan2(ratony - pjy-15, ratonx - pjx-15);
  2.             // be sure theta is positive
  3.             if (theta < 0) {
  4.                 theta += 2 * Math.PI
  5.             };
  6.             // convert to degrees and rotate so 0 degrees = 12 o'clock
  7.             var grados= (theta * 180 / Math.PI + 90) % 360;

Última edición por phyronx; 26/06/2013 a las 06:06