Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel o rei

[Resolvido] box 2d

Recommended Posts

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import Box2D.Dynamics.*;
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	public class estudo extends Sprite {
		public var world:b2World;
		public var physScale:Number=30;
		public var bola:b2Body;
		public var gravity:Number=10;

		public function estudo() {
			world=new b2World(new b2Vec2(0,gravity),true);

			createBodies();

			addEventListener(Event.ENTER_FRAME, doStep);

		}
		public function createBodies():void {
			var bodyDef:b2BodyDef= new b2BodyDef();
			var fixtureDef:b2FixtureDef = new b2FixtureDef();
			bodyDef.position.Set(100/physScale, 100/physScale);
			bodyDef.type=b2Body.b2_dynamicBody;
			var circleShape:b2CircleShape=new b2CircleShape(40/physScale);
        bodyDef.type=b2Body.b2_dynamicBody;
	   fixtureDef.shape=circleShape;
			
			bola=world.CreateBody(bodyDef);
			bola.CreateFixture(fixtureDef);
		}
		public function doStep(e:Event):void {
			world.Step(1/30,10,10);
			world.DrawDebugData();
		}

	}
}

Quero fazer um script o mais simples possível só com um circulo caindo mas esse script não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Daniel,

por que você não faz isso de forma mais prática, ou seja, sem ser pelo script!?

vai no palco desenha um circulo, daí você vai na frame que deseja,tipo 20,aperta F6 e coloca o circulo lá em baixo e coloca um Tween motion... pronto! não precisa de script! :huh:

 

se não for essa a maneira mais simples, por favor me explique que fiquei curioso também!

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é AS 3

 

Só por isso ele poderia desenhar um Circulo...

 

Eu sugiro você dar uma olhada nesse tópico aqui:

http://forum.imasters.com.br/index.php?/topic/246610-actionscript-3-0/

 

Vai resolver muitas de suas dúvidas.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte cara,

no boxd2, você tem que criar um mundo inteiro e não só colocar as propriedades dele (world:b2world;)...

no seu caso ai você esqueceu 2 coisas:

*criar a parte concreta do seu mundo, chão, paredes e etc.

*desenha o que tu fez na tela (debugDraw);

 

ajeitei teu codigo aqui com o que faltava, dai tu da uma estudada em cima dele e pronto =D.

package {
        import flash.display.Sprite;
        import flash.events.Event;
        import Box2D.Dynamics.*;
        import Box2D.Collision.*;
        import Box2D.Collision.Shapes.*;
        import Box2D.Common.Math.*;
        public class estudo extends Sprite {
                public var world:b2World;
                public var physScale:Number=30;
                public var bola:b2Body;
                public var gravity:Number=10;

                public function estudo() {
                        world=new b2World(new b2Vec2(0,gravity),true);
			//aqui as duas funções que faltava
                        DebugDraw();
			paredes();

                        createBodies();

                        addEventListener(Event.ENTER_FRAME, doStep);

                }
				
			private function paredes():void
		{
			var parede:b2PolygonShape = new b2PolygonShape();
			var paredeBodyDef = new b2BodyDef();
			var paredeBody:b2Body;
			
			//L
			paredeBodyDef.position.Set( -95 / physScale, 400 / physScale / 2);
			parede.SetAsBox(100 / physScale, 400 / physScale / 2);
			paredeBody = world.CreateBody(paredeBodyDef);
			paredeBody.CreateFixture2(parede);
			//R
			paredeBodyDef.position.Set(640 / physScale, 400 / physScale / 2);
			paredeBody = world.CreateBody(paredeBodyDef);
			paredeBody.CreateFixture2(wall);
			//TOP
			paredeBodyDef.position.Set( 640 / physScale/2, -95 / physScale);
			parede.SetAsBox(680/ physScale/2, 100 / physScale);
			paredeBody = world.CreateBody(paredeBodyDef);
			paredeBody.CreateFixture2(parede);
			//baixo
			paredeBodyDef.position.Set(640  / physScale/2, (400+95) / physScale);
			paredeBody = world.CreateBody(paredeBodyDef);
			paredeBody.CreateFixture2(parede);
			
			
			
			
		}
			private function DebugDraw():void
		{
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			var debugSprite:Sprite = new Sprite();
			addChild(debugSprite);
			debugDraw.SetSprite(debugSprite);
			debugDraw.SetDrawScale(30.0);
			debugDraw.SetFillAlpha(0.3);
			debugDraw.SetLineThickness(1.0);
			debugDraw.SetFlags(b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit);
			world.SetDebugDraw(debugDraw);
			
			
		}
				
                public function createBodies():void {
                        var bodyDef:b2BodyDef= new b2BodyDef();
                        var fixtureDef:b2FixtureDef = new b2FixtureDef();
                        bodyDef.position.Set(100/physScale, 100/physScale);
                        bodyDef.type=b2Body.b2_dynamicBody;
                        var circleShape:b2CircleShape=new b2CircleShape(40/physScale);
        bodyDef.type=b2Body.b2_dynamicBody;
           fixtureDef.shape=circleShape;
                        
                        bola=world.CreateBody(bodyDef);
                        bola.CreateFixture(fixtureDef);
                }
                public function doStep(e:Event):void {
                        world.Step(1 / 30, 10, 10);
			world.ClearForces();
                        world.DrawDebugData();
                }

        }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu devia ter explicado melhor que não era uma animação.

Eu peguei um script de um site e tentei simplificar ao máximo só com um circulo, para depois fazer modificações , e assim estudando para que eu entenda melhor e faça scripts do box 2d sozinho. Eu estou tendo uma dificuldade pois quando eu estava aprendendo AS2 eu migrei para AS3. Eu já usava o flash a muito tempo mas quase não usava.

 

Obridado a todos pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou!!!!

Muito obrigado!

Eu precisava de um documento bem simples para que eu possa ir modificando, alterando valores, inserindo objetos e outras coisas e assim estudando.

Deu um erro mas consegui corrigi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.