读书人

物理模拟引擎box2D-3 怎么让sprite 像

发布时间: 2012-10-08 19:54:56 作者: rapoo

物理模拟引擎box2D-3 如何让sprite 像body一样移动


package  {import Box2D.Collision.b2AABB;import Box2D.Collision.Shapes.b2CircleDef;import Box2D.Common.Math.b2Vec2;import Box2D.Dynamics.b2Body;import Box2D.Dynamics.b2BodyDef;import Box2D.Dynamics.b2World;import flash.display.MovieClip;import flash.display.Sprite;import flash.events.Event;public class Puggle extends MovieClip {var _ballSprite:Sprite;var _ballBody:b2Body;public function Puggle() {// set physics world setupWorld();makeBall();addEventListener(Event.ENTER_FRAME, newFrameListener);}private function newFrameListener(e:Event):void {physicsVal.world.Step(1 / 30, 10);_ballSprite.x = _ballBody.GetPosition().x*physicsVal.RATIO;_ballSprite.y = _ballBody.GetPosition().y * physicsVal.RATIO;_ballSprite.rotation = _ballBody.GetAngle() * 180 / Math.PI;}private function makeBall():void{//ball sprite _ballSprite = new BallSprite();addChild(_ballSprite);//create ball bodyvar ballShapeDef:b2CircleDef = new b2CircleDef();ballShapeDef.radius = 15 / physicsVal.RATIO;ballShapeDef.density = 1.0;ballShapeDef.friction = 0.3;ballShapeDef.restitution = 0.2;var ballBodyDef:b2BodyDef = new b2BodyDef();ballBodyDef.position.Set(200/physicsVal.RATIO,10/physicsVal.RATIO);_ballBody = physicsVal.world.CreateBody(ballBodyDef);_ballBody.CreateShape(ballShapeDef);_ballBody.SetMassFromShapes();}private function setupWorld():void{//world size var worldSize:b2AABB = new b2AABB();worldSize.lowerBound.Set(-5000/physicsVal.RATIO,-5000/physicsVal.RATIO);worldSize.upperBound.Set(5000 / physicsVal.RATIO, 5000 / physicsVal.RATIO);//gravityvar gravity:b2Vec2 = new b2Vec2(0.0,9.8);//sleep?var doSleep:Boolean = true;physicsVal.world = new b2World(worldSize, gravity, doSleep);}}}

读书人网 >编程

热点推荐