如何确保动态 body 在 libgdx box2d 中没有应用重力
How to make sure a Dynamic body has no gravity applied to it in libgdx box2d
在我制作的游戏中,我有一个 body 跟随我的玩家,该玩家属于 Actor (scene2D) 类型。在他的压倒一切的行为方法中,他使用 libgdx 输入来移动。例如,(伪)if(gdxInput.keys(keys.up)){ applyForceToCenter(VElocity) xCoor = body.x yCoor = body.y
我如何确保 body 不会滑得到处都是?世界的重力为 0,0 所以如果我单击向上箭头玩家将永远不会停止所以在我巨大的 if else if 块输入语句中我输入 else linearVelocity = 0 这有效但是如果玩家按住右箭头键然后按住向上箭头键,玩家向右移动更多,然后向上移动,就好像他在冰上滑动一样。请告诉我一般情况下如何关闭播放器的所有重力。我不能只设置 body 的位置,因为我使用物体作为碰撞的一种方式,设置 body 的位置是为了关闭碰撞。
你的播放器有没有设置阻尼body?
playerBody.SetLinearDamping(0.2f);
如果您没有对 playerBody 应用任何东西,这会随着时间的推移将位置力减少到 0。
一旦你想停止你将速度设置为 0 例如
if(!canFall){
velocity.y = 0;
}else
velocity.y += MainScreen.GRAVITY.y;
if(Gdx.input.isKeyPressed(Keys.A)){
velocity.x -= 10 * Gdx.graphics.getDeltaTime();
}
else if(Gdx.input.isKeyPressed(Keys.D)){
velocity.x += 10 * Gdx.graphics.getDeltaTime();
}else
velocity.x = 0;
所以一旦你停止你的速度将等于 0!
在我制作的游戏中,我有一个 body 跟随我的玩家,该玩家属于 Actor (scene2D) 类型。在他的压倒一切的行为方法中,他使用 libgdx 输入来移动。例如,(伪)if(gdxInput.keys(keys.up)){ applyForceToCenter(VElocity) xCoor = body.x yCoor = body.y
我如何确保 body 不会滑得到处都是?世界的重力为 0,0 所以如果我单击向上箭头玩家将永远不会停止所以在我巨大的 if else if 块输入语句中我输入 else linearVelocity = 0 这有效但是如果玩家按住右箭头键然后按住向上箭头键,玩家向右移动更多,然后向上移动,就好像他在冰上滑动一样。请告诉我一般情况下如何关闭播放器的所有重力。我不能只设置 body 的位置,因为我使用物体作为碰撞的一种方式,设置 body 的位置是为了关闭碰撞。
你的播放器有没有设置阻尼body?
playerBody.SetLinearDamping(0.2f);
如果您没有对 playerBody 应用任何东西,这会随着时间的推移将位置力减少到 0。
一旦你想停止你将速度设置为 0 例如
if(!canFall){
velocity.y = 0;
}else
velocity.y += MainScreen.GRAVITY.y;
if(Gdx.input.isKeyPressed(Keys.A)){
velocity.x -= 10 * Gdx.graphics.getDeltaTime();
}
else if(Gdx.input.isKeyPressed(Keys.D)){
velocity.x += 10 * Gdx.graphics.getDeltaTime();
}else
velocity.x = 0;
所以一旦你停止你的速度将等于 0!