Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. package be.devine.ogp.view
  2. {
  3. import Box2D.Collision.Shapes.b2CircleShape;
  4. import Box2D.Collision.Shapes.b2PolygonShape;
  5. import Box2D.Collision.b2AABB;
  6. import Box2D.Common.Math.b2Vec2;
  7. import Box2D.Dynamics.Joints.b2Joint;
  8. import Box2D.Dynamics.Joints.b2PrismaticJoint;
  9. import Box2D.Dynamics.Joints.b2PrismaticJointDef;
  10. import Box2D.Dynamics.b2Body;
  11. import Box2D.Dynamics.b2BodyDef;
  12. import Box2D.Dynamics.b2DebugDraw;
  13. import Box2D.Dynamics.b2FixtureDef;
  14. import Box2D.Dynamics.b2World;
  15.  
  16. import flash.display.Sprite;
  17. import flash.events.Event;
  18.  
  19. public class GameView extends Sprite
  20. {
  21. private var _pixelsToMeter:uint = 30;
  22. private var _groundHeight:uint = 60;
  23. private var _world:b2World;
  24. private var _gravity:b2Vec2;
  25. private var _doSleep:Boolean = true;
  26. private var _step:Number = 1/30;
  27. private var _velocityIterations:uint = 4;
  28. private var _positionIterations:uint = 4;
  29.  
  30.  
  31. private var groundBody:b2Body
  32. public function GameView()
  33. {
  34. this.addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
  35. }
  36. private function addedToStageHandler(event:Event):void
  37. {
  38. _gravity = new b2Vec2(0.0,10.0);
  39. _world = new b2World(_gravity,_doSleep);
  40.  
  41. createGround();
  42. createObject();
  43. createDebugDraw();
  44.  
  45. this.addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
  46. }
  47. private var box:b2Body;
  48. private var the_prism_joint:b2PrismaticJointDef = new b2PrismaticJointDef()
  49. private var prismaticJointDef:b2PrismaticJointDef;
  50. private function createObject():void
  51. {
  52. makeDynBox();
  53. var worldAxis:b2Vec2 = new b2Vec2(1.0, 0.0);
  54.  
  55. prismaticJointDef = new b2PrismaticJointDef();
  56. prismaticJointDef.Initialize(body, groundBody, body.GetWorldCenter(), worldAxis);
  57. prismaticJointDef.lowerTranslation = -2.5;
  58. prismaticJointDef.upperTranslation = 2.5;
  59. prismaticJointDef.enableLimit = true;
  60. prismaticJointDef.maxMotorForce = 10.0;
  61. prismaticJointDef.motorSpeed = -1.0;
  62. prismaticJointDef.enableMotor = true;
  63.  
  64. _world.CreateJoint(prismaticJointDef);
  65.  
  66. }
  67. private var body:b2Body;
  68. private function makeDynBox():void
  69. {
  70. var bodyDef:b2BodyDef = new b2BodyDef();
  71. bodyDef.type = b2Body.b2_dynamicBody;
  72. bodyDef.position.Set(2,1.3);
  73. body = _world.CreateBody(bodyDef);
  74. var dynamicBox:b2PolygonShape = new b2PolygonShape();
  75. dynamicBox.SetAsBox(1,1);
  76. var fixtureDef:b2FixtureDef = new b2FixtureDef();
  77. fixtureDef.shape = dynamicBox;
  78. fixtureDef.density = 1;
  79. fixtureDef.friction = 0.3;
  80. body.CreateFixture(fixtureDef);
  81. }
  82. private function createGround():void
  83. {
  84.  
  85. var groundBodyDef:b2BodyDef = new b2BodyDef();
  86. groundBodyDef.position.Set((stage.stageWidth / 2) / _pixelsToMeter, stage.stageHeight / _pixelsToMeter - 20 / _pixelsToMeter);
  87.  
  88. groundBody = _world.CreateBody(groundBodyDef);
  89.  
  90. var groundBox:b2PolygonShape = new b2PolygonShape();
  91. groundBox.SetAsBox((stage.stageWidth / 2) / _pixelsToMeter, 20 / _pixelsToMeter);
  92.  
  93. var groundFixtureDef:b2FixtureDef = new b2FixtureDef();
  94. groundFixtureDef.shape = groundBox;
  95. groundFixtureDef.density = 1;
  96. groundFixtureDef.friction = 1;
  97. groundBody.CreateFixture(groundFixtureDef);
  98. }
  99. private function createDebugDraw():void{
  100.  
  101. var sprite:Sprite = new Sprite();
  102. this.addChild(sprite);
  103.  
  104. var debugDraw:b2DebugDraw = new b2DebugDraw();
  105. debugDraw.SetSprite(sprite);
  106. debugDraw.SetAlpha(0.6);
  107. debugDraw.SetLineThickness(1);
  108. debugDraw.SetDrawScale(_pixelsToMeter);
  109. debugDraw.SetFillAlpha(0.6);
  110. debugDraw.SetFlags(b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit);
  111. _world.SetDebugDraw(debugDraw);
  112. }
  113. private function onEnterFrameHandler(event:Event):void
  114. {
  115. _world.Step(_step,_velocityIterations,_positionIterations);
  116. _world.ClearForces();
  117. _world.DrawDebugData();
  118. if(!body.IsAwake())
  119. {
  120. prismaticJointDef.motorSpeed = 1;
  121. prismaticJointDef.maxMotorForce = -10;
  122. body.ApplyTorque(1);
  123. }
  124. }
  125. }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement