Difference between revisions of "love.physics.newBody"

(Undo revision 7042 by Daemonicky (talk))
 
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Create a new body.
+
Creates a new body.
A body with zero mass is '''static''' and will not move.
+
 
Mass can be changed at any time with [[Body:setMass]] or [[Body:setMassFromShapes]].
+
There are three types of bodies.
 +
* Static bodies do not move, have an infinite mass, and can be used for level boundaries.
 +
* Dynamic bodies are the main actors in the simulation, they collide with everything.
 +
* Kinematic bodies do not react to forces and only collide with dynamic bodies.
 +
 
 +
The mass of the body gets calculated when a [[Fixture]] is attached or removed, but can be changed at any time with [[Body:setMass]] or [[Body:resetMassData]].
 +
 
 +
{{notice|Making changes to a [[World]] is not allowed inside of the [[beginContact]], [[endContact]], [[preSolve]], and [[postSolve]] callback functions, as BOX2D locks the world during these callbacks.}}
 +
 
 +
== Function ==
 +
{{newin|[[0.8.0]]|080|type=variant}}
 +
=== Synopsis ===
 +
<source lang="lua">
 +
body = love.physics.newBody( world, x, y, type )
 +
</source>
 +
=== Arguments ===
 +
{{param|World|world|The world to create the body in.}}
 +
{{param|number|x (0)|The x position of the body.}}
 +
{{param|number|y (0)|The y position of the body.}}
 +
{{param|BodyType|type ("static")|The type of the body.}}
 +
=== Returns ===
 +
{{param|Body|body|A new body.}}
  
 
== Function ==
 
== Function ==
 +
{{oldin|[[0.8.0]]|080|type=variant}}
 
=== Synopsis ===
 
=== Synopsis ===
 
<source lang="lua">
 
<source lang="lua">
Line 16: Line 38:
 
=== Returns ===
 
=== Returns ===
 
{{param|Body|body|A new body.}}
 
{{param|Body|body|A new body.}}
 +
 +
== Examples ==
 +
<source lang="lua">
 +
love.physics.setMeter(40) -- meter is 40 px/units
 +
world = love.physics.newWorld(0, 9.81*40, true) -- new world with gravity
 +
body1 = love.physics.newBody(world, 250, 300, "static") -- new static body at x=250, y=300
 +
body2 = love.physics.newBody(world, 251, 100, "dynamic") -- new dynamic body at x=251, y=100
 +
</source>
 +
 
== See Also ==
 
== See Also ==
 
* [[parent::love.physics]]
 
* [[parent::love.physics]]
 
* [[Constructs::Body]]
 
* [[Constructs::Body]]
 
[[Category:Functions]]
 
[[Category:Functions]]
{{#set:Description=Create a new body.}}
+
{{#set:Description=Creates a new body.}}
 
{{#set:Since=000}}
 
{{#set:Since=000}}
 
== Other Languages ==
 
== Other Languages ==
 
{{i18n|love.physics.newBody}}
 
{{i18n|love.physics.newBody}}

Latest revision as of 18:24, 19 April 2022

Creates a new body.

There are three types of bodies.

  • Static bodies do not move, have an infinite mass, and can be used for level boundaries.
  • Dynamic bodies are the main actors in the simulation, they collide with everything.
  • Kinematic bodies do not react to forces and only collide with dynamic bodies.

The mass of the body gets calculated when a Fixture is attached or removed, but can be changed at any time with Body:setMass or Body:resetMassData.

O.png Making changes to a World is not allowed inside of the beginContact, endContact, preSolve, and postSolve callback functions, as BOX2D locks the world during these callbacks.  


Function

Available since LÖVE 0.8.0
This variant is not supported in earlier versions.

Synopsis

body = love.physics.newBody( world, x, y, type )

Arguments

World world
The world to create the body in.
number x (0)
The x position of the body.
number y (0)
The y position of the body.
BodyType type ("static")
The type of the body.

Returns

Body body
A new body.

Function

Removed in LÖVE 0.8.0
This variant is not supported in that and later versions.

Synopsis

body = love.physics.newBody( world, x, y, m, i )

Arguments

World world
The world to create the body in.
number x (0)
The x position of the body.
number y (0)
The y position of the body.
number m (0)
The mass of the body.
number i (0)
The rotational inertia of the body.

Returns

Body body
A new body.

Examples

love.physics.setMeter(40) -- meter is 40 px/units
world = love.physics.newWorld(0, 9.81*40, true) -- new world with gravity
body1 = love.physics.newBody(world, 250, 300, "static") -- new static body at x=250, y=300
body2 = love.physics.newBody(world, 251, 100, "dynamic") -- new dynamic body at x=251, y=100

See Also


Other Languages