2017-04-12 58 views
0

我刚刚开始使用box2d,我试图让一个火箭(现在是矩形)飞行,它只是在游戏开始时垂直站立,我想从矩形的底部,因为这是发动机的位置,也是矩形面对的方向。 我试着这样做libgdx在矩形方向上施加力正面临着

body.applyLinearImpulse(getUserData().getBoosterLinearImpulse(), new Vector2(body.getWorldCenter().x, body.getWorldCenter().y - Constants.ROCKET_HEIGHT), true); 

这是按下屏幕的右下角时被执行的方法。它只在矩形静止时才起作用。 我显然不知道自己在做什么。 我还有另一个问题:applyLineairForce和applyForce之间有什么区别,以及我如何最好地学习如何使用box2d,因为我觉得它不容易(这不是问题)?

回答

0

如果我理解这个权利,你想知道applyLinearImpulse和applyForce之间的区别。冲动是一种通常用于游戏中跳跃的力量的一次性应用,而力量则是每帧应用的东西,用于提高汽车的速度。

为了让您对其施加外力你的火箭,你可以使用这样的事情:

 // gets x force based on angle 
     float x = (float)Math.sin(body.getAngle() - Math.PI); // minus PI as objects start off facing right 
     // gets y force based on angle 
     float y = (float)Math.cos(body.getAngle()); 

     //apply force to center (applies force to middle so no rotation) 
     //body.applyForceToCenter(new Vector2(
     //  body.getMass()* (x * 12), 
     //  body.getMass()*(y*12)), true); 

     //NOTE: bodies must be set to .fixedRotation = false in order to rotate; 

     //apply force to a point on body (will create rotational force) 
     body.applyForce(new Vector2(
       body.getMass()* (x * 12),//x force to apply 
       body.getMass()* (y * 12)), //y force to apply 
       // apply force to body at 0.5f(halfway for 1f wide object) x and -5 y 
       body.getWorldPoint(new Vector2(0.5f,-5)),true); 
+0

好吧,谢谢,我会尽力做到这一点。另一个问题:你是如何学习这一切的?使用box2d?因为我无法理解libgdx/box2d文档。 – DreamsInHD

+0

我亲自通过反复试验和大量阅读iforce2d [链接](http://www.iforce2d.net/b2dtut/introduction)指南了解到。从头开始的游戏有一个很好的教程[链接](http://www.gamefromscratch.com/post/2014/08/27/LibGDX-Tutorial-13-Physics-with-Box2D-Part-1-A-Basic-Physics -Simulations.aspx) – dfour

+0

好的,非常感谢我也开始这样做。在你回答主要问题时:你能解释最后一行代码吗?你在身体的多个部位施加力量吗?你会如何将力量施加到底部,以便火箭在垂直站立时向上移动,以便它朝着“指向”方向移动? – DreamsInHD