Java libGDX-我的Box2D身体不跳
我正在尝试用java游戏引擎libGDX制作一个小游戏。我已经得到了球员,但他不能跳,我不知道为什么 这是我的GameScreen类:Java libGDX-我的Box2D身体不跳,java,libgdx,game-engine,Java,Libgdx,Game Engine,我正在尝试用java游戏引擎libGDX制作一个小游戏。我已经得到了球员,但他不能跳,我不知道为什么 这是我的GameScreen类: public class GameScreen extends ScreenManager{ //For the view of the game and the rendering private SpriteBatch batch; private OrthographicCamera cam; //DEBUG pr
public class GameScreen extends ScreenManager{
//For the view of the game and the rendering
private SpriteBatch batch;
private OrthographicCamera cam;
//DEBUG
private Box2DDebugRenderer b2dr;
//World, Player and so on
private GameWorld world;
private Player player;
private Ground ground;
public static float w, h;
public GameScreen(Game game) {
super(game);
//vars
w = Gdx.graphics.getWidth();
h = Gdx.graphics.getHeight();
//view and rendering
batch = new SpriteBatch();
cam = new OrthographicCamera();
cam.setToOrtho(false, w/2, h/2);
//debug
b2dr = new Box2DDebugRenderer();
//world, bodies ...
player = new Player(world);
ground = new Ground(world);
}
@Override
public void pause() {
}
@Override
public void show() {
}
@Override
public void render(float delta) {
//clearing the screen
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//updating
update(Gdx.graphics.getDeltaTime());
//render
batch.setProjectionMatrix(cam.combined);
//debug
b2dr.render(world.getWorld(), cam.combined);
}
@Override
public void resize(int width, int height) {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
@Override
public void onKlick(float delta) {
}
public void update(float delta){
world.update(delta);
player.keyInput();
System.out.println(player.getBody().getPosition().x);
System.out.println(player.getBody().getPosition().y);
}
}
这是我的球员课程:
public class Player {
public static Body body;
public static BodyDef def;
private FixtureDef fd;
//set form
private PolygonShape shape;
private GameScreen gs;
public Player(GameWorld world){
def = new BodyDef();
def.fixedRotation = true;
def.position.set(gs.w / 4, gs.h / 4);
def.type = BodyType.DynamicBody;
body = world.getWorld().createBody(def);
shape = new PolygonShape();
shape.setAsBox(32 / 2, 32 / 2);
fd = new FixtureDef();
fd.shape = shape;
fd.density = 30;
body.createFixture(fd);
shape.dispose();
}
public static Body getBody() {
return body;
}
public static BodyDef getDef() {
return def;
}
public static void keyInput(){
if(Gdx.input.isKeyPressed(Input.Keys.UP)){
body.applyForceToCenter(0, 900, false);
System.out.println("PRESSED");
}
}
}
这就是我的游戏世界课程:
public class GameWorld {
public static World world;
public GameWorld(){
world = new World(new Vector2(0f, -10f), false);
}
public void update(float delta){
world.step(1 / 60f, 5, 2);
System.out.println("WorldUPDATE");
}
public static World getWorld() {
return world;
}
}
我不知道为什么身体不能跳,如果你能的话请帮帮我(:提前谢谢你。力每一步都推动身体,而重力又把它推回地面。有一个功能,在重力干扰之前,用它所有的“力”一次推它
当你使用身体时,身体应该向上推,但与冲动相比,这是一个非常缓慢的过程。好的,非常感谢你的回答。你能给我一个例子吗?是的,非常有效!非常感谢,但现在一切看起来都非常缓慢。你知道如何解决这个问题吗?这是因为你没有缩放你的播放器大小,所以Box2d认为它是正确的g比你看到的要大得多(米而不是像素)