Comunidad de diseño web y desarrollo en internet online

Tiro de Parabola

Citar            
MensajeEscrito el 03 Feb 2009 08:51 am
Buenas noches a todos!.

Estoy haciendo un juego relativamente simple, consiste en un cañón que dispara a un objetivo y en su camino se puede encontrar con "enemigos" que bloqueen el tiro.

Ya tengo todo hecho, enemigos, hitObject, etc, pero simplemente no puedo con el tiro de parábola, supongo que es porque no soy nada bueno en física ni nada. He buscado pero la verdad no entiendo muy bien sobre el tema.

Lo que necesito es que el tiro se base en dos variables: La fuerza y el ángulo. En base a estos se determine la parábola.

Me podrían ayudar/orientar por favor?.

Por flash_aqua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2009 09:42 am
Cualquier movimiento en lo podemos simular como

Código ActionScript :

var vx:Number=.3
var vy:Number=.7
mc.addEventListener(Event.ENTER_FRAME,moverMc)
function moverMc(e:Event){
     e.target.x+=vx
     e.target.y+=vy
}

En un movimiento "parabólico" la vy también cambia con el tiempo, por efecto de la ley de la gravedad así que podríamos escribir

Código ActionScript :

var vx:Number=.3;
var vy:Number=-.7;
var g:Number=.1;
mc.addEventListener(Event.ENTER_FRAME,moverMc)
function moverMc(e:Event){
     e.target.x+=vx
     e.target.y+=vy
     vy+=g
}

Vale, he puesto los valores vx,vy y g "a bulto". Si queremos ponerlos en función de un ángulo pondremos

Código ActionScript :

var fuerza=10;
var angulo=30;
var angulo_rad=angulo*Math.PI/180
var vx:Number=fuerza*Math.sin(angulo_rad);
var vy:Number=-fuerza*Math.cos(angulo_rad);
var g:Number=.1;
mc.addEventListener(Event.ENTER_FRAME,moverMc)
function moverMc(e:Event){
     e.target.x+=vx
     e.target.y+=vy
     vy+=g
}

Observa que, en contra de lo que verás en cualquier libro de física, al principio, la "vy" es negativa (hacia arriba) . Esto es debido a que en informática el punto 0,0 está en la parte superior izquierda, y valores mayores de la "y" hacen que nuestro MC esté más abajo (eso permite tener la misma referencia para monitores de mayor o menor tamaño)
NOTA:no he contado la fricción del viento, sino deberiamos escribir en la función MoverMc vx-=.01, p.e.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2009 05:37 pm
Hola muchas gracias, me sirvió mucho, solo que tengo dos problemas que no he podido resolver jejeje.

El primero, es que no puedo hacer que vaya mas rápido el proyectil. Lo mejor que puede hacer fue esto, pero creo que esta mal. Y sigue estando lento :oops:

Código :

function moverMc(e:Event){ 
     e.target.x+=vx+vx 
     e.target.y+=vy+vy
     vy+=g 
} 


Y el segundo es que cuando el ángulo es 0, la trayectoria que hace seria la que yo esperaría para 90 y viceversa, pero no entiendo muy bien por que :cry:

Por flash_aqua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2009 07:18 pm
Bueno lo del angulo ya lo solucione, lo estaba sacando al revés jeje. Pero sigo sin poder aumentar la velocidad del proyectil.

Por flash_aqua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2009 07:49 pm
Ya puede modificar la velocidad aumentando la gravedad y la fuerza. Gracias por la ayuda ^^

Por flash_aqua

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2009 08:38 am
:oops: :oops: :oops: :oops: :oops: :oops:
Despues de tantos años....
Es

Código ActionScript :

var vx:Number=fuerza*Math.cos(angulo_rad); 
var vy:Number=-fuerza*Math.sin(angulo_rad); 

Vamos, el coseno es la componente HORIZONTAL y el seno la componente vertical. ESE es el motivo de que el ángulo no te saliera correctamente, lo siento.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 May 2013 03:05 am
aqui les comparto

un ejemplo de tiro con parabola para as3
y su respectivo fla
[url=https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxtYW1hbmRvMTIzfGd4OjM3NWYxYjdjNWQ4ODM4Zjc][/url]

Por mario sanchez

3 de clabLevel



 

chrome

 

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