2DPhysics_Joints.lua 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. scene = PhysicsScene2D(0.1, 50)
  2. ceiling = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 2.0, 0.1)
  3. ceiling:setColor(0.0, 0.0, 0.0, 1.0)
  4. ceiling:setPosition(0, 0.5)
  5. scene:addPhysicsChild(ceiling, PhysicsScene2DEntity.ENTITY_RECT, true)
  6. --Revolute Joint
  7. shape = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 0.03, 0.2)
  8. shape:setAnchorPoint(Vector3(0.0, 1.0, 0.0))
  9. shape:setPosition(-0.3, 0.48)
  10. scene:addPhysicsChild(shape, PhysicsScene2DEntity.ENTITY_RECT, false)
  11. scene:createRevoluteJoint(shape, ceiling, 0.0, 0.01)
  12. scene:applyImpulse(shape, 10, 0)
  13. --Distance Joint
  14. shape = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 0.1, 0.02)
  15. shape:setPosition(0.0, 0.2)
  16. scene:addPhysicsChild(shape, PhysicsScene2DEntity.ENTITY_RECT, false)
  17. scene:createDistanceJoint(shape, ceiling, false)
  18. scene:applyImpulse(shape, 2, 0)
  19. line = SceneLine(shape, ceiling)
  20. line:setColor(1.0, 0.0, 0.0, 1.0)
  21. scene:addChild(line)
  22. --Prismatic Joint
  23. shape = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 0.05, 0.1)
  24. shape:setPosition(0.3, 0.3)
  25. scene:addPhysicsChild(shape, PhysicsScene2DEntity.ENTITY_RECT, false)
  26. scene:createPrismaticJoint(ceiling, shape, Vector2(0,1), 0,0, false, -0.3, 0, true)
  27. lineAnchor = Entity()
  28. lineAnchor:setPosition(0.3,0.5)
  29. line = SceneLine(shape, lineAnchor)
  30. line:setColor(0.0, 1.0, 0.0, 1.0)
  31. scene:addChild(line)