Comunidad de diseño web y desarrollo en internet online

Capturar el evento: objetos detenidos por gravedad con Away3D Physics.

Citar            
MensajeEscrito el 08 Abr 2014 03:14 am
Saludos ActionScripTianos();

Me preguntaba si existe algún evento o lógica que capture la detención de un grupo de objetos 3d por gravedad.

Tengo 5 Dados, los lanzo aleatoriamente en un plano, estos estos saltan colisionan, chocan entre ellos, y al final quedan quietos. una vez terminado de moverse estos dados, quiero obtener de cada uno su rotación XYZ para poder obtener los números en que quedaron.

Lo único que se me ocurre es un timer. pero no es eficiente, ya que los dados son lanzados aleatoriamente y pueden tardar un tiempo variable en detenerse.

Espero puedan ayudarme, saludos.

Por WWCC

113 de clabLevel



Genero:Masculino  

Diseñador y desarrollador multimedia

chrome
Citar            
MensajeEscrito el 08 Abr 2014 06:26 am
Ni idea de Away3D (menos de la libreria Physics). pero no creo que te consuma muchos recursos hacer un tracking de la velocidad x cada frame:

vx = oldPos - currPos ;
oldPos = currPos ;
if(Math.abs(vx) < 0.5 ) {
// detenido.
}

Por más que tengas 1000 dados en simultaneo validando la velocidad, no te va a hacer diferencia en términos de performance.

Por rodrigolopezpeker

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Abr 2014 03:32 pm
Interesante propuesta, pero también tuve problemas con eso, ya que una vez lanzado el evento //detenido. de alguno de los dados, otro dado al final puede llegar a chocarlo, haciéndole cambiar de sentido al primero que ya lanzo el evento detenido.
está complicada la cosa...

Miren mi proyecto... www.wilsonwaldo.com.ar/pruebas/

Por WWCC

113 de clabLevel



Genero:Masculino  

Diseñador y desarrollador multimedia

chrome
Citar            
MensajeEscrito el 09 Abr 2014 04:20 pm
Agrega un counter para detectar cuando todos los dados están detenidos.
Esa funcion de distancia puede setear un flag isMoving=false/true
No se como tenes armado tu codigo, pero toma esto como ref:

Código ActionScript :

function onEnterFrame():void {
for( var i:int; i < dados.length; ++i )[
   var dado:Dado = dados[i] as Dado;
   dado.update() ;
   if(!dado.isMoving){
      dadosDetenidos++ ;
   } 
}
if(dadosDetenidos==dados.length ) {
    // todos detenidos. disparar evento.
}
}

Por rodrigolopezpeker

61 de clabLevel



 

chrome

 

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