Comunidad de diseño web y desarrollo en internet online

Coalision entre objetos (Ayuda por favor)

Citar            
MensajeEscrito el 03 Dic 2010 03:52 pm
Saludos a todos, necesito una mano urgente, estoy aún muy inexperto en As3 sin embargo tengo nociones y puedo comprender rápido, ya que mis conocimientos en otros lenguajes ayudan a desarrollar mi entendimiento.

El asunto es que necesito hacer una animación, donde un grupo de burbujas floten por inercia y hagan Coalision, además de poder arrastrarlas con el mouse y hacer que aparezcan aún más haciendo click ; he podido hacer lo que mis conocimientos me han permitido, que son los eventos MouseEvent, sin embargo la colisión conjuntamente con los demas efectos no la he logrado, por favor denme una manito, algun indicio o ejemplo que pueda alumbrarme el camino para poder orientarme, es algo hasta cierto punto similar a esto http://www.coconnut.com/blog/source/jel/EjemploFiguras/EjemploFiguras.html

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 03 Dic 2010 04:02 pm
Si quieres algo muy similr a ese bajate el codigo de ese ejemplo, alli mismo en la pagina te dan la opcion de descargar tod el proyecto.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Dic 2010 05:22 pm

Angel Roberto escribió:

Si quieres algo muy similr a ese bajate el codigo de ese ejemplo, alli mismo en la pagina te dan la opcion de descargar tod el proyecto.


Si claro, se bien que puedo descargarlo, pero como dije en el post no soy experto en este lenguaje asi que no es la idea descargar una libreria, mucho menos una tan compleja como esa, solo quiero una explicaciòn o un indicio que me indique de por cual camino ir para aprender a realizar la coalision entre objetos, gracias por la respuesta, saludos.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 03 Dic 2010 05:29 pm
Puedes leer en la documentación sobre hitTest es la forma mas simple,esto no te da una colisión a nivel pixel pero puede servir para comenzar.

Por Angel Roberto

Claber

248 de clabLevel



 

safari
Citar            
MensajeEscrito el 04 Dic 2010 08:09 am
BuenAS:

Más que este ejemplo (que me suena de algo ;) ) si lo que quieres es que interactúen las burbujas, echa un vistazo a:

Box2D

Box2D descargar código y ejemplos

y para facilitar un poco su utilización:

Quick Box2D

ya que además de arrastrar las burbujas necesitarás un motor de físicas que las haga interartuar.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 05 Dic 2010 11:10 am

Lukánicos escribió:

BuenAS:

Más que este ejemplo (que me suena de algo ;) ) si lo que quieres es que interactúen las burbujas, echa un vistazo a:

Box2D

Box2D descargar código y ejemplos

y para facilitar un poco su utilización:

Quick Box2D

ya que además de arrastrar las burbujas necesitarás un motor de físicas que las haga interartuar.

Un saludo.


Muchisimas gracias con esto ya tengo una idea con mas forma, creo que se te hace conocido por que me parece que es de tu blog jeje, muy bueno felicidades, soy programador pero me he enfocado en php, js y otras tecnologìas; sin darme cuenta que me estaba perdiendo de un gran lenguaje que hasta ahora no havia profundizado. Ando hechandole mucho el ojo a tu blog ya que hay mucho material que acelera el aprendisaje, al igual que en este foro, muchas gracias por compartir el conocimiento saludos.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 08 Dic 2010 07:54 pm

Lukánicos escribió:

BuenAS:

Más que este ejemplo (que me suena de algo ;) ) si lo que quieres es que interactúen las burbujas, echa un vistazo a:

Box2D

Box2D descargar código y ejemplos

y para facilitar un poco su utilización:

Quick Box2D

ya que además de arrastrar las burbujas necesitarás un motor de físicas que las haga interartuar.

Un saludo.


Lukànicos le he tomado la palabra he descargado una libreria, cuya clase comienzo a entender pero aun tengo muchas dudas, podria por favorrrrrr ayudarme y explicarme un poco mas de su funcionamiento por favooor.

la clase en cuestion es:

Código :

package{
   
   import flash.display.Sprite;
   import flash.events.Event;
   // Classes used in this example
   import Box2D.Dynamics.*;
   import Box2D.Collision.*;
   import Box2D.Collision.Shapes.*;
   import Box2D.Common.Math.*;
   
   public class HelloWorld extends Sprite{
      
      public function HelloWorld(){
         
         
         
         // Add event for main loop
         addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
         
         
         
         // Creat world AABB
         var worldAABB:b2AABB = new b2AABB();
         worldAABB.lowerBound.Set(-100.0, -100.0);
         worldAABB.upperBound.Set(100.0, 100.0);
         
         // Define the gravity vector
         var gravity:b2Vec2 = new b2Vec2(0.0, 10.0);
         
         // Allow bodies to sleep
         var doSleep:Boolean = true;
         
         // Construct a world object
         m_world = new b2World(worldAABB, gravity, doSleep);
         
         // set debug draw
         /*var dbgDraw:b2DebugDraw = new b2DebugDraw();
         var dbgSprite:Sprite = new Sprite();
         addChild(dbgSprite);
         dbgDraw.m_sprite = dbgSprite;
         dbgDraw.m_drawScale = 30.0;
         dbgDraw.m_fillAlpha = 0.0;
         dbgDraw.m_lineThickness = 1.0;
         dbgDraw.m_drawFlags = 0xFFFFFFFF;
         m_world.SetDebugDraw(dbgDraw);*/
         
         
         
         // Vars used to create bodies
         var body:b2Body;
         var bodyDef:b2BodyDef;
         var boxDef:b2PolygonDef;
         var circleDef:b2CircleDef;
         
         
         
         // Add ground body
         bodyDef = new b2BodyDef();
         //bodyDef.position.Set(15, 19);
         bodyDef.position.Set(10, 12);
         //bodyDef.angle = 0.1;
         boxDef = new b2PolygonDef();
         boxDef.SetAsBox(30, 3);
         boxDef.friction = 0.3;
         boxDef.density = 0; // static bodies require zero density
         /*circleDef = new b2CircleDef();
         circleDef.radius = 10;
         circleDef.restitution = 0.2*/
         // Add sprite to body userData
         bodyDef.userData = new PhysGround();
         //bodyDef.userData = new PhysCircle();
         bodyDef.userData.width = 30 * 2 * 30; 
         bodyDef.userData.height = 30 * 2 * 3; 
         //bodyDef.userData = new PhysCircle2();
         bodyDef.userData.width = 30 * 2 * 30; 
         bodyDef.userData.height = 30 * 2 * 3; 
         addChild(bodyDef.userData);
         body = m_world.CreateBody(bodyDef);
         body.CreateShape(boxDef);
         //body.CreateShape(circleDef);
         body.SetMassFromShapes();
         
         // Add some objects
         for (var i:int = 1; i < 10; i++){
            bodyDef = new b2BodyDef();
            bodyDef.position.x = Math.random() * 15 + 5;
            bodyDef.position.y = Math.random() * 10;
            var rX:Number = Math.random() + 0.5;
            var rY:Number = Math.random() + 0.5;
            // Box
            if (Math.random() < 0.5){
               boxDef = new b2PolygonDef();
               boxDef.SetAsBox(rX, rY);
               boxDef.density = 1.0;
               boxDef.friction = 0.5;
               boxDef.restitution = 0.2;
               bodyDef.userData = new PhysBox();
               bodyDef.userData.width = rX * 2 * 30; 
               bodyDef.userData.height = rY * 2 * 30; 
               body = m_world.CreateBody(bodyDef);
               body.CreateShape(boxDef);
            } 
            // Circle
            else {
               circleDef = new b2CircleDef();
               circleDef.radius = rX;
               circleDef.density = 1.0;
               circleDef.friction = 0.5;
               circleDef.restitution = 0.2
               bodyDef.userData = new PhysCircle();
               bodyDef.userData = new PhysCircle2();
               bodyDef.userData.width = rX * 2 * 30; 
               bodyDef.userData.height = rX * 2 * 30; 
               body = m_world.CreateBody(bodyDef);
               body.CreateShape(circleDef);
            }
            body.SetMassFromShapes();
            addChild(bodyDef.userData);
         }
         
      }
      
      public function Update(e:Event):void{
         
         m_world.Step(m_timeStep, m_iterations);
         
         // Go through body list and update sprite positions/rotations
         for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next){
            if (bb.m_userData is Sprite){
               bb.m_userData.x = bb.GetPosition().x * 30;
               bb.m_userData.y = bb.GetPosition().y * 30;
               bb.m_userData.rotation = bb.GetAngle() * (180/Math.PI);
            }
         }
         
      }
      
      public var m_world:b2World;
      public var m_iterations:int = 10;
      public var m_timeStep:Number = 1.0/30.0;
      
   }

}


Quisiera poder agregar otros Mc y a traves de un array introducirlos a la escena de manera aleatoria a traves del evento mouseclick, por favorrrrrr despeje mis dudas y disculpe tantas molestias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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