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//ESTA ES LA FORMULA DE LA RECTA DADO DOS vectores
//al clickar con el raton recojo su posicion, y la del tio, y al tener 2 puntos
//puedosaber la formula de la recta.
//por cada vuelta, sumo o resto 5 a 'x', y vuelvo a recojer la x segun esaa x.
var yb = ytio+(((yraton-ytio)/(xraton-xtio))*(bala.getX()-xtio));
bala.setY(yb);
//si el grado es superior de 180 dispara hacia el otro lado.
if (parseInt(grados) > 180) {
bala.setX(bala.getX()-5);
}else{
bala.setX(bala.getX()+5);
}
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 originalvar theta = Math.atan2(ratony - pjy-15, ratonx - pjx-15);
// be sure theta is positive
if (theta < 0) {
theta += 2 * Math.PI
};
// convert to degrees and rotate so 0 degrees = 12 o'clock
var grados= (theta * 180 / Math.PI + 90) % 360;