我有一个非常简单的使用Box2d的LibGDX游戏。现在,它只是一艘在地图上移动的船。如果我使用body.setTransform()
方法来改变船的位置,我可以通过键盘控制让船移动,但这显然没有利用Box2d的功能。我想使用ApplyForce()
方法来控制玩家船,但由于某种原因,无论我设置的力有多高或多低,该方法都不做任何事情。我还尝试了appyLinearImPul()
和setLinearVelody()
,两者都有相同的效果:什么都没有。我通过测井证实,我的船的速度实际上保持在恒定的0.0,而不仅仅是微小的变化。
以下是游戏循环和实体的相关内容:
http://pastebin.com/bsA4fVPn
特别是有关部分:
public void update(){
this.applyIntendedMovement();
}
public void applyIntendedMovement(){
if(this.isMovingUp){
this.body.applyForceToCenter(new Vector2(0,100).scl(this.SPEED_FACTOR), true);
}
}
为什么对applyForce()的调用什么都不做?此外,我在创建球员身体时明确设置了密度,但当我在任何给定时刻检查球员的质量时,它是0.0。我知道这两个问题很有可能是相关的,但我不知道该怎么办。
啊,我觉得自己很愚蠢。我意识到在我已经创建了身体之后,我正在将我的bodyDef设置为Dynamic。我只是重新排列了一些代码行,它很有效。对不起,各位。
问题内容: 我刚刚开始使用libgdx创建游戏。它是使用scene2d ui的自上而下的2d射击游戏。现在我想,我可以在某些程度上增加黑暗和光明,但是我不想使用box2d重写所有内容。我不需要逼真的阴影,只需某种环境光和围绕我角色的光圈即可,不受周围墙壁和其他障碍物的影响。所以我想知道libgdx中是否有任何照明系统?或者我可以不使用box2d物体/世界而使用box2dlights吗?谢谢 问题答
我正在使用ContactListener测试box 2D中两个物体之间的碰撞 这是我在世界上使用的所有contactListener类。设置ContactListener(new Box2DWorld(this))以添加它 我的dedub是这样的 beginContact preSolve postSolve。preSolve postSolve beginContact preSolve END
虽然我真的很喜欢LibGDX Box2d魔法,但在我的第一个项目中调整一切是很痛苦的。 我现在面临的问题是,即使我的sprite和DebugRenderer对齐,但当我触摸屏幕(在Nexus 5上测试)时,我得到了错误的坐标。 第一个例子——蓝点是触摸点 在这张图中,我触摸的是形状外部,但我得到的坐标实际上在形状内部,因此测试点返回true: 第二个例子-蓝点是接触点 在这张图像中,我触摸到了形状
我就开门见山了。所以我在做这个游戏,你应该用你的咒语杀死其他物体。我创造了子弹和它们的身体。我们都很好。它正在工作。但我想让它看起来特别和“神奇”,所以我决定使用粒子。我制作了粒子,把它们放在子弹体后面,用下面的代码: 但当我发射多发子弹时,问题是粒子刚刚从我发射的所有第一发子弹中消失,并且只出现在最后一发子弹上。有人能给我介绍一下这个吗? -----------------编辑---------
我想把它集成到libgdx中。Liquidfun看起来不错,但我听说它给可移植性带来了问题,而且不能很好地与桌面应用程序配合使用。根据我的理解,libgdx中的粒子效应并不遵循粒子所涉及的物理,所以我认为我也不应该走那条路。
我想要两个SpriteBatch对象,一个用于实际的sprites,另一个用于HUD。我不知道如何让一个SpriteBatch保持相对屏幕的位置,但让另一个SpriteBatch以玩家的身体为中心移动。我有一个用于box2d身体的正交摄像头和一个用于精灵的正交摄像头。 我以为setProjingMatrix方法可以解决这个问题,但我可能用错了。 这给了我停留在左下角的“你好”,一个停留在中心并旋转