Comunidad de diseño web y desarrollo en internet online

Continuar la trayectoria de un misil lanzado con el ratón

Citar            
MensajeEscrito el 07 Jul 2017 08:06 pm
Hola a todos, he retomado un viejo proyecto y preciso ayuda a ver si me pueden destrabar.

Lo que preciso es que el misil tenga la misma velocidad sin importar donde se le haga clic (en el ejemplo que daré el misil cambia su velocidad según a la distancia que se le haga clic de su punto de salida. Se el motivo por que pasa eso pero me he trabado y no logro encontrar una solución para que haga lo que quiero).

Código ActionScript :

 import flash.events.Event;
stage.addEventListener (MouseEvent.CLICK, clicIzquierdo);
addEventListener( Event.ENTER_FRAME, Main );
 
   personaje_jugador.x = 300;
   personaje_jugador.y = 300;
   charu.x=personaje_jugador.x;
   charu.y=personaje_jugador.y;
   function rotar()
{    
   var grados:Number = 180/Math.PI;
      var radianes:Number = Math.atan2 (personaje_jugador.y-root.mouseY,personaje_jugador.x-root.mouseX);
      var giro:Number = radianes*grados;
   
      personaje_jugador.rotation = giro;
   charu.rotation = giro;
}

var nuevabolafuego:BolaFuego = new BolaFuego;

function dispararArmaB ()
{
    
   var r:Rectangle = charu.getRect(stage);
    var centro:Point = new Point(r.x+r.width/2,r.y+r.height/2);
   var grados:Number = 180/Math.PI;
    var radianes:Number = Math.atan2 (personaje_jugador.y-root.mouseY,personaje_jugador.x-root.mouseX);
    var giro:Number = radianes*grados;
    nuevabolafuego.rotation = giro;
   
   addChild(nuevabolafuego).x=centro.x;
   addChild(nuevabolafuego).y=centro.y;

}
function bolaFuegoActiva ()
{
   return (nuevabolafuego.x < 2000);
   return (nuevabolafuego.y < 2000);
}
var ratonY = 0;
var ratonX = 0;

function clicIzquierdo (e:MouseEvent):void
{               
 ratonY =personaje_jugador.y-root.mouseY;
 ratonX =personaje_jugador.x-root.mouseX;
   trace("click Izquierdo");
   
   dispararArmaB ();
}

function Main( e:Event  ):void
{
   rotar();
       
   if (bolaFuegoActiva ())
   {       
      nuevabolafuego.y -=ratonY;
      nuevabolafuego.x -=ratonX;
   }

}


Descargar archivo fla

Por Akaris

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Jul 2017 11:50 am
Mi intención siempre es aprender por que quiero saber lo que estoy haciendo (Aunque me demoro muchísimo por el tiempo libre que le puedo invertir y me la paso más buscando por google que escribiendo código)

Cuando comencé con esta parte de disparar quise hacerlo con Tween.

Código ActionScript :

new Tween(addChild (nuevomisil), "x", None.easeInOut, centro.x, mouseX, 1, true);
new Tween(addChild (nuevomisil), "y", None.easeInOut, centro.y, mouseY, 1, true);


Con lo que puse hago que nuevomisil salga de centro y llegue a donde señalo con el raton.

Jorge me responde:

solisarg escribió:

En realidad eso no se hace con la clase Tween, sino con un poco de trigonometría y un vector (composición de dos ejes) que se actualice en un OnenterFrame. Básicamente:

- Determinás el ángulo en el que se dispara
- Lo descomponés en sus componentes X e Y
- Dreterminás la velocidad sobre ambos ejes para esa trayectoria
- Le aplicás el cambio de posición en un OnEnterFrame

Jorge


Se que bien clarito me dijo que se hacia con trigonometría pero siempre creí que la rotación en AS era solo visual y que el ángulo se determinaba por el desplazamiento de fotograma x e y. Intente seguir los pasos que me dijo (bueno a la manera que yo lo entendí por que de AS no tengo idea de nada) pero para determinar el angulo se me ocurrió con una simple resta, pero como es una resta cuanto más cerca o lejos haga clic el resultado varia y termina dando más o menos fotograma tanto para x como para y y eso varia la velocidad. Esto causo que me trabara pensando como hacer con este mismo código utilizando condiciones regularle la cantidad de fotograma.

Creo que al fin ahora voy bien encaminado hacia la solución con el tutorial que hizo ZahTutorial: Trigonometría en Flash y clases (debo resaltar que esta tan bien explicado que incluso alguien como yo puede entenderlo.)

Creo que con este tutorial lograre resolver mí problema pero si uds creen que debo estudiar otra cosa para lograr mi fin díganmelo por favor, por que conociéndome me atascare otra vez por meses buscándole la solución solo con este tutorial.

Por Akaris

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Jul 2017 12:12 pm
Los efectos visuales y el mas o menos son para banners o cosas por el estilo, si lo que quieres es desarrollar juegos, tendras que hacerte amigo de los algoritmos. La buena noticia es que hay mucha info por la web. Recuerdo que uno de mis sitios favoritos era http://www.flashandmath.com/ ... asi que si tienes algo de tiempo, echale un ojo a esos tutos tambien

Jorge

Por solisarg

BOFH

13396 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

   Página 1 de 1

 

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