2DPhysics_CollisionOnly.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. scene = PhysicsScene2D(0.1, 60)
  2. checkShape = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 0.2,0.03)
  3. scene:addCollisionChild(checkShape, PhysicsScene2DEntity.ENTITY_RECT)
  4. for i=0,50 do
  5. shape = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 0.1,0.02)
  6. shape:setRoll(random(360))
  7. shape:setPosition(-0.5 + random(), -0.5 + random())
  8. scene:addCollisionChild(shape, PhysicsScene2DEntity.ENTITY_RECT)
  9. end
  10. function onNewCollision(t, event)
  11. physicsEvent = safe_cast(event, PhysicsScene2DEvent)
  12. if physicsEvent.entity1 == checkShape then
  13. physicsEvent:getFirstEntity():setColor(1.0, 0.0, 0.0, 1.0)
  14. physicsEvent:getSecondEntity():setColor(1.0, 0.0, 0.0, 1.0)
  15. end
  16. end
  17. function onEndCollision(t, event)
  18. physicsEvent = safe_cast(event, PhysicsScene2DEvent)
  19. physicsEvent:getFirstEntity():setColor(1.0, 1.0, 1.0, 1.0)
  20. physicsEvent:getSecondEntity():setColor(1.0, 1.0, 1.0, 1.0)
  21. end
  22. scene:addEventListener(nil, onNewCollision, PhysicsScene2DEvent.EVENT_NEW_SHAPE_COLLISION)
  23. scene:addEventListener(nil, onEndCollision, PhysicsScene2DEvent.EVENT_END_SHAPE_COLLISION)
  24. function onMouseMove(x,y)
  25. local ray = scene:projectRayFromCameraAndViewportCoordinate(scene:getActiveCamera(), Vector2(x,y))
  26. checkShape:setPosition(ray.origin.x, ray.origin.y)
  27. end
  28. function Update(e)
  29. checkShape:setRoll(checkShape:getRoll() + (e*100))
  30. end