Difference between revisions of "B2.Fixture"

From GiderosMobile
m (Text replacement - "</source" to "</syntaxhighlight")
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
'''Supported platforms:''' android, ios, mac, pc<br/>
+
<!-- GIDEROSOBJ:b2.Fixture -->
 +
'''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/>
 
'''Available since:''' Gideros 2011.6<br/>
 
'''Available since:''' Gideros 2011.6<br/>
 +
 
=== Description ===
 
=== Description ===
<br />
+
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.
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 />
+
Fixtures are created via [[b2.Body:createFixture]].
Fixtures are created via `b2.Body:createFixture`.<br />
+
 
<br />{|-
+
=== Examples ===
| style="width: 50%;"|
+
'''Example of fixtures collision filtering'''
 +
<syntaxhighlight lang="lua">
 +
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})
 +
</syntaxhighlight>
 +
 
 +
{|-
 +
| style="width: 50%; vertical-align:top;"|
 
=== Methods ===
 
=== Methods ===
[[b2.Fixture:getBody]] - returns the parent body of this fixture<br/>
+
[[b2.Fixture:getBody]] ''returns the parent body of this fixture''<br/><!--GIDEROSMTD:b2.Fixture:getBody() returns the parent body of this fixture-->
[[b2.Fixture:getFilterData]] - returns the contact filtering data<br/>
+
[[b2.Fixture:getFilterData]] ''returns the contact filtering data''<br/><!--GIDEROSMTD:b2.Fixture:getFilterData() returns the contact filtering data-->
[[b2.Fixture:isSensor]] - is this fixture a sensor (non-solid)?<br/>
+
[[b2.Fixture:isSensor]] ''is this fixture a sensor (non-solid)?''<br/><!--GIDEROSMTD:b2.Fixture:isSensor() is this fixture a sensor (non-solid)?-->
[[b2.Fixture:setFilterData]] - sets the contact filtering data<br/>
+
[[b2.Fixture:setFilterData]] ''sets the contact filtering data''<br/><!--GIDEROSMTD:b2.Fixture:setFilterData(filterData) sets the contact filtering data-->
[[b2.Fixture:setSensor]] - sets if this fixture is a sensor<br/>
+
[[b2.Fixture:setSensor]] ''sets if this fixture is a sensor''<br/><!--GIDEROSMTD:b2.Fixture:setSensor(sensor) sets if this fixture is a sensor-->
| style="width: 50%;"|
+
 
 +
| style="width: 50%; vertical-align:top;"|
 
=== Events ===
 
=== Events ===
 
=== Constants ===
 
=== Constants ===
 
|}
 
|}
 +
 +
----
 +
*'''[[LiquidFun]]'''

Latest revision as of 17:57, 12 July 2023

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
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