2014-11-11 3 views
0

Я пытаюсь создать игру, в которой кто-то бросает бомбу. Мне интересно, как я могу реагировать на бомбу так, как показано на следующем рисунке: enter image description hereБросать бомбу в LibGDX Box2D

Есть ли какие-либо инструменты в Box2D, которые могут помочь мне в достижении этого? Я уже создал бомбу, которая осуществляется гравитацией и силами. Но я не знаю, как мне нужно бросить бомбу?

Вот как я создал бомбу

Body bomb; 
BodyDef bdef = new BodyDef(); 
FixtureDef fdef = new FixtureDef(); 

CircleShape bombBall = new CircleShape(); 

bdef.type = BodyType.DynamicBody; 
fdef.restitution = 0.4f; 

bigBall.setRadius(1f/PPM); 
bdef.position.set(0/PPM, 10f/PPM); 

fdef.shape = bombBall; 
fdef.density = 0; 

ball = world.createBody(bdef); 
ball.createFixture(fdef); 

И здесь, в моем вынести methot я применяю линейный Impulse

ball.applyLinearImpulse(.09f, 0.09f, ball.getPosition().x, ball.getPosition().y, true); 
+0

Думаю, вам нужно применить импульс к телу. – Springrbua

+0

Хорошо, но есть много импульсов. И как мне нужно использовать его, чтобы бомба могла реагировать таким образом, который представлен изображением. Мне нужно, чтобы моя бомба поднималась (увеличение координат), а координаты y уменьшались. – David

+0

Я предполагаю, что это применитьLinearImpulse (http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/physics/box2d/Body.html#applyLinearImpulse-float-float-float-float-boolean-) , первые 2 параметра - это сила в каждом направлении (более высокий у-импульс приведет к более высокой кривой), а следующие 2 - это точка, к которой вы хотите применить импульс, я думаю, центр масс в вашем случае – Springrbua

ответ

0

Как было отмечено в комментариях, которые необходимо применить линейный Inpulse к вашей бомбы. Это довольно легко. Вам нужно только, чтобы сделать что-то вроде этого

body.applyLinearImpulse(your_x_impulse,your_y_impulse, body.getPosition().x, body.getPosition().y, true); 

где your_x_impulse и your_y_impulse являются масса * скорость х и у соответственно.

+0

Хорошо, спасибо за ваш ответ. Но посмотрите, когда я применяю 'y_impulse' в какой-то момент импульс должен быть положительным (бомба должна двигаться по оси y до UP, а затем импульс должен быть отрицательным, потому что только тогда может упасть бомба). Есть ли в Box2D классы, которые могут делать то, о чем я прошу? (Я не нахожу ничего полезного в Интернете, кроме этого веб-сайта http://www.iforce2d.net/b2dtut/projected-trajectory – David

+0

Impulse sets body's начальная скорость, тогда движение тела поддерживается только гравитацией. – nikoliazekter

+0

ОК, я только что обновил свой код, потому что каким-то образом я не получаю эффекта, который я хочу. EDIT умело получаю. Я не могу установить линейный импульс в Мне нужно установить его в моем конструкторе, где я создаю шар. Спасибо! – David