Difference between revisions of "love.physics.setMeter"

(Created page with "{{newin|0.8.0|type=variants|plural=y}} Set the scale of the world. The world scale is the number of pixels per meter. Try to keep your shape sizes less than 10 times this ...")
 
m (Depending on when the function is called, the result of the physics could be different. Added notice to call this function before any use ofthe physics module)
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{newin|[[0.8.0]]|type=variants|plural=y}}
+
{{newin|[[0.8.0]]|080|type=function}}
 +
Sets the pixels to meter scale factor.
  
 +
All coordinates in the physics module are divided by this number and converted to meters, and it creates a convenient way to draw the objects directly to the screen without the need for graphics transformations.
  
Set the scale of the world.
+
It is recommended to create shapes no larger than 10 times the scale. This is important because Box2D is tuned to work well with shape sizes from 0.1 to 10 meters. The default meter scale is 30.
  
The world scale is the number of pixels per meter. Try to keep your shape sizes less than 10 times this scale.
+
{{notice|love.physics.setMeter does not apply retroactively to created objects. Created objects retain their meter coordinates but the scale factor will affect their pixel coordinates. It is recommended to call this function before any further use of the [[love.physics]] module}}
 
 
The default scale for new worlds is 30 pixels per meter.
 
 
 
This is important because the physics in Box2D is tuned to work well for objects of size 0.1m up to 10m. All physics coordinates are divided by this number for the physics calculations.
 
  
 
== Function ==
 
== Function ==
Line 16: Line 14:
 
</source>
 
</source>
 
=== Arguments ===
 
=== Arguments ===
{{param|number|scale|The size of 1 meter in pixels.}}
+
{{param|number|scale|The scale factor as an integer.}}
 
=== Returns ===
 
=== Returns ===
 
Nothing.
 
Nothing.
 +
== Examples ==
 +
=== Note that the body's coordinates in meters remain unchanged ===
 +
<source lang="lua">
 +
love.physics.setMeter(30) -- set 30 pixels/meter
 +
body = love.physics.newBody(world, 300, 300, "dynamic") -- place the body at pixel coordinates (300,300) or in meter coordinates (10,10)
 +
love.physics.setMeter(10) -- set 10 pixels/meter
 +
body:getPosition() -- returns pixel coordinates (100,100)
 +
</source>
 
== See Also ==
 
== See Also ==
* [[parent::World]]
+
* [[parent::love.physics]]
 +
* [[love.physics.getMeter]]
 
[[Category:Functions]]
 
[[Category:Functions]]
{{#set:Description=Set the scale of the world.}}
+
{{#set:Description=Sets the meter scale factor.}}
 
+
{{#set:Since=080}}
 
== Other Languages ==
 
== Other Languages ==
{{i18n|World:setMeter}}
+
{{i18n|love.physics.setMeter}}

Latest revision as of 09:20, 12 April 2019

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

Sets the pixels to meter scale factor.

All coordinates in the physics module are divided by this number and converted to meters, and it creates a convenient way to draw the objects directly to the screen without the need for graphics transformations.

It is recommended to create shapes no larger than 10 times the scale. This is important because Box2D is tuned to work well with shape sizes from 0.1 to 10 meters. The default meter scale is 30.

O.png love.physics.setMeter does not apply retroactively to created objects. Created objects retain their meter coordinates but the scale factor will affect their pixel coordinates. It is recommended to call this function before any further use of the love.physics module  


Function

Synopsis

love.physics.setMeter( scale )

Arguments

number scale
The scale factor as an integer.

Returns

Nothing.

Examples

Note that the body's coordinates in meters remain unchanged

love.physics.setMeter(30) -- set 30 pixels/meter
body = love.physics.newBody(world, 300, 300, "dynamic") -- place the body at pixel coordinates (300,300) or in meter coordinates (10,10)
love.physics.setMeter(10) -- set 10 pixels/meter
body:getPosition() -- returns pixel coordinates (100,100)

See Also


Other Languages