Difference between revisions of "B2.Fixture"

From GiderosMobile
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
'''Supported platforms:''' android, ios, mac, pc<br/>
+
'''<translate>Supported platforms</translate>:''' [[File:Platform android]][[File:Platform ios]][[File:Platform mac]][[File:Platform pc]]<br/>
'''Available since:''' Gideros 2011.6<br/>
+
'''<translate>Available since</translate>:''' Gideros 2011.6<br/>
 
=== <translate>Description</translate> ===
 
=== <translate>Description</translate> ===
 
<translate><br />
 
<translate><br />
 
A fixture is used to attach a shape to a body for collision detection. A fixture inherits its<br />
 
A fixture is used to attach a shape to a body for collision detection. A fixture inherits its<br />
 
transform from its parent. Fixtures hold additional non-geometric data such as friction, collision filters, etc.<br />
 
transform from its parent. Fixtures hold additional non-geometric data such as friction, collision filters, etc.<br />
Fixtures are created via [[Special:MyLanguage/b2.Body:createFixture|b2.Body:createFixture]].<br />
+
Fixtures are created via `b2.Body:createFixture`.<br />
 
<br /></translate>
 
<br /></translate>
 
=== <translate>Examples</translate> ===
 
=== <translate>Examples</translate> ===

Revision as of 09:28, 24 August 2018

Supported platforms: File:Platform androidFile:Platform iosFile:Platform macFile:Platform pc
Available since: Gideros 2011.6

Description


A fixture is used to attach a shape to a body for collision detection. A fixture inherits its
transform from its parent. Fixtures hold additional non-geometric data such as friction, collision filters, etc.
Fixtures are created via `b2.Body:createFixture`.

Examples

Example of fixtures collision filtering

local BALL_MASK = 1
local CRATE_MASK = 2
local WALL_MASK = 4
 
-- ball
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 will collide with other ball and wall
fixture:setFilterData({categoryBits = BALL_MASK, maskBits = BALL_MASK + WALL_MASK, groupIndex = 0})

local body = world:createBody{type = b2.DYNAMIC_BODY}
local poly = b2.PolygonShape.new()
poly:setAsBox(width, height)
local fixture = body:createFixture{shape = poly, density = 1.0, 
friction = 0.1, restitution = 0.2}
-- crate will collide with other crate and wall
fixture:setFilterData({categoryBits = CRATE_MASK, maskBits = CRATE_MASK + WALL_MASK, groupIndex = 0})

local body = world:createBody{type = b2.STATIC_BODY}
local chain = b2.ChainShape.new()
chain:createLoop(
	0,0,
	application:getContentWidth(), 0,
	application:getContentWidth(), application:getContentHeight(),
	0, application:getContentHeight()
)
local fixture = body:createFixture{shape = chain, density = 1.0, 
friction = 1, restitution = 0.3}
-- walls will collide with both balls and crates
fixture:setFilterData({categoryBits = WALL_MASK, maskBits = CRATE_MASK + BALL_MASK, groupIndex = 0})

Methods

b2.Fixture:getBody returns the parent body of this fixture
b2.Fixture:getFilterData returns the contact filtering data
b2.Fixture:isSensor is this fixture a sensor (non-solid)?
b2.Fixture:setFilterData sets the contact filtering data
b2.Fixture:setSensor sets if this fixture is a sensor

Events

Constants