Difference between revisions of "B2.World"
(removed language stuff) |
m (Text replacement - "<source" to "<syntaxhighlight") |
||
Line 12: | Line 12: | ||
=== Examples === | === Examples === | ||
'''Creating Box2d body and moving Bitmap along the body''' | '''Creating Box2d body and moving Bitmap along the body''' | ||
− | < | + | <syntaxhighlight lang="lua"> |
require "box2d" | require "box2d" | ||
local world = b2.World.new(0, 10, true) | local world = b2.World.new(0, 10, true) | ||
Line 45: | Line 45: | ||
'''Detecting collisions between bodies''' | '''Detecting collisions between bodies''' | ||
− | < | + | <syntaxhighlight lang="lua"> |
--add collision event listener | --add collision event listener | ||
world:addEventListener(Event.BEGIN_CONTACT, function(e) | world:addEventListener(Event.BEGIN_CONTACT, function(e) |
Revision as of 14:26, 13 July 2023
Supported platforms:
Available since: Gideros 2011.6
Inherits from: EventDispatcher
Description
The b2.World class inherits from EventDispatcher.
The b2.World class manages all physics entities and dynamic simulation. It is possible to create and manage more than one b2.World instance.
Examples
Creating Box2d body and moving Bitmap along the body <syntaxhighlight lang="lua"> require "box2d" local world = b2.World.new(0, 10, true)
--create ball bitmap object from ball graphic local ball = Bitmap.new(Texture.new("ball.png")) --reference center of the ball for positioning ball:setAnchorPoint(0.5,0.5)
ball:setPosition(100,100)
--get radius local radius = ball:getWidth()/2
--create box2d physical object local body = world:createBody{type = b2.DYNAMIC_BODY} local circle = b2.CircleShape.new(0, 0, radius) local fixture = body:createFixture{shape = circle, density = 1.0, friction = 0.1, restitution = 0.2} ball.body = body
--add to scene stage:addChild(ball)
stage:addEventListener(Event.ENTER_FRAME, function() -- edit the step values if required. These are good defaults!
world:step(1/60, 8, 3)
ball:setPosition(ball.body:getPosition()) ball:setRotation(math.rad(ball.body:getAngle())) end) </source>
Detecting collisions between bodies <syntaxhighlight lang="lua"> --add collision event listener world:addEventListener(Event.BEGIN_CONTACT, function(e)
--getting contact bodies local fixtureA = e.fixtureA local fixtureB = e.fixtureB local bodyA = fixtureA:getBody() local bodyB = fixtureB:getBody() --do what you need with colliding bodies
end)
--add collision event listener world:addEventListener(Event.END_CONTACT, function(e)
--getting contact bodies local fixtureA = e.fixtureA local fixtureB = e.fixtureB local bodyA = fixtureA:getBody() local bodyB = fixtureB:getBody() --do what you need with colliding bodies
end)
--add collision event listener world:addEventListener(Event.PRE_SOLVE, function(e)
--getting contact bodies local fixtureA = e.fixtureA local fixtureB = e.fixtureB local bodyA = fixtureA:getBody() local bodyB = fixtureB:getBody() --do what you need with colliding bodies
end)
--add collision event listener world:addEventListener(Event.POST_SOLVE, function(e)
--getting contact bodies local fixtureA = e.fixtureA local fixtureB = e.fixtureB local bodyA = fixtureA:getBody() local bodyB = fixtureB:getBody() --do what you need with colliding bodies
--additionally get collision force print(event.maxImpulse) end) </source>
Methodsb2.World.new creates a new physics world |
EventsEvent.BEGIN_CONTACT Constants |