2017-08-02 3 views
0

Comment désactiver la gravité pour certains corps physiques en utilisant LOVE Physics for Lua?Désactiver la gravité pour certains corps physiques

blocks.ground.body = love.physics.newBody(world, 0, blocks.ground.y, "dynamic") 
blocks.ground.shape = love.physics.newRectangleShape(500, 50) 
blocks.ground.fixture = love.physics.newFixture(blocks.ground.body, blocks.ground.shape) 
blocks.ground.color = {86,176,0} 

C'est mon code actuel pour le corps, je dois aussi rester « dynamique » parce que je dois déplacer son X

Voir complet Code:code

+0

Pouvez-vous poster plus de code? Tels que la façon dont vous avez défini les ensembles. –

+0

https://hastebin.com/ofusilozim.lua Je sais que ce n'est pas le code le plus beau, mais c'est l'un de mes premiers jeux lua donc j'apprends encore – HamptonM

+0

C'est bien. C'est un langage amusant à apprendre. Il est utile de pouvoir regarder le code complet. Je recommande d'ajouter cette ligne à votre question comme ** Afficher le code complet: ** -> lien –

Répondre

0

En supposant que vous êtes en utilisant LÖVE 0.8.0+:

Option 1:

Votre code:

blocks.ground.body = love.physics.newBody(world, 0, blocks.ground.y, "dynamic") 
blocks.ground.shape = love.physics.newRectangleShape(500, 50) 
blocks.ground.fixture = love.physics.newFixture(blocks.ground.body, blocks.ground.shape) 
blocks.ground.color = {86,176,0} 

Note: Dans votre code love.physics.newFixture(blocks.ground.body, blocks.ground.shape)

sur le site Web de LOVE (1):

objects.ground.fixture = love.physics.newFixture(objects.ground.body, objects.ground.shape) --attach shape to body 

également à partir du site Web de LOVE (2):

objects.ball.fixture = love.physics.newFixture(objects.ball.body, objects.ball.shape, 1) -- Attach fixture to body and give it a density of 1. 

Dans le second extrait de leur site Web ils ont mis la densité des billes (de masse) à 1. De même, vous devriez être en mesure de régler la masse à 0 auquel cas la gravité n'aurait aucun effet sur l'objet. Cependant, si d'autres objets entrent en collision avec votre objet, de masse 0, je ne suis pas sûr du type d'actions funky qui peuvent se produire.

Option 2:

L'autre option est de créer un nouveau monde avec gravité 0:

love.physics.setMeter(64) --the height of a meter our worlds will be 64px 
    worldNoGravity = love.physics.newWorld(0, 0, true) 

ajouter ensuite les corps à ce monde:

blocks.ground.body = love.physics.newBody(worldNoGravity , 0, blocks.ground.y, "dynamic") 
blocks.ground.shape = love.physics.newRectangleShape(500, 50) 
blocks.ground.fixture = love.physics.newFixture(blocks.ground.body, blocks.ground.shape) 
blocks.ground.color = {86,176,0} 

Espoir un de ceux qui travaillera pour vous :).