Comunidad de diseño web y desarrollo en internet online

alargar linea con .lineTo

Citar            
MensajeEscrito el 04 May 2008 12:50 am
hola que tal
tengo un juego en el que necesito que una linea recta salga de el arma y termine en el mouse y lo consegui de esta manera:

onEnterFrame = function () {
this.clear();
this.lineStyle(1, 0x00FF00, 60, true);
this.moveTo(metralleta1._x, metralleta1._y);
this.lineTo(_xmouse, _ymouse);
}

funciona bien , pero ahora lo que necesito es que la linea sea el doble de larga (y que siga al mouse igual que antes) , es decir que no termine donde esta el puntero sino que sea mas larga

se supone que es muy facil que es cuestion de multiplicar por 2 _xmouse _ymouse para que quede asi:

this.lineTo(_xmouse * 2 , _ymouse * 2 );

de esa manera la linea es el doble de larga que la distancia de el arma al mouse, pero nada , al probar la pelicula la linea va hacia donde quiere y tiene el tamaño que quiere y no sigue al mouse, creo que no es multiplicando por 2, no se como es.....:o , si me pueden ayudar mil gracias

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2008 10:47 am
En realidad si lo piensas, eso solo sirve en diagonal hacia abajo (suman sobre ambos ejes), hay otros tres casos (digonal hacia arriba, izquierda arriba, izquierda abajo) en donde ambos valores no son positivos y dependen de cual sea la relación entre el origen y la posición del Mouse. Allí puedes aplicar una serie de if (eso lo sacas con lógica) o trigonometría (eso es más difícil, aunque se halla en biblioteca de juegos, composición y proyección de un vector)
Siempre que hagas juegos necesitarás fórmulas físicas y trigonometría, ve buscando alguna (ej en AS3 http://www.fisixengine.com/, André Michelle tenía una muy buena, http://blog.andre-michelle.com/ ) si quieres seguir con el palo de juegos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 May 2008 03:39 pm
Hola, retoqué tu código para que se extienda la línea con "n" pixeles de largo, en la dirección que determina el mouse:

Código :

largo = 500; // pixeles
onEnterFrame = function () {
   this.clear();
   this.lineStyle(1, 0x00FF00, 60, true);
   this.moveTo(metralleta1._x, metralleta1._y);
   //this.lineTo(_xmouse, _ymouse);
   
   var rotacion;
   var dx = this._parent._xmouse - this._x;
   var dy = this._parent._ymouse - this._y;
   rotacion = Math.atan2(dy, dx)*180/Math.PI;
   
   var p_x = (Math.cos(Math.PI/180 * rotacion)*largo);
   var p_y = (Math.sin(Math.PI/180 * rotacion)*largo);
   this.lineTo(p_x, p_y);
}

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 05 May 2008 03:45 pm
gracias micheloud!!! eres dios no???

Por fermmm

Claber

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2008 04:11 pm
Nop, aplica trigonometría ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 May 2008 05:11 pm
De nada fermmm, un saludo cordial :)

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.