libGDX에서 scene2D를 배우고 nullPointerException을 계속 실행하는 데 도움이되는 작은 프로젝트를 시작했습니다. 내 목표는 플레이어가 동작 시퀀스를 사용하여 점프하도록하는 것입니다. 내 문제는 플레이어가 뛰어 내린다는 것이지만, 일단 게임이 다시 쓰러지면 떨어집니다. 제가 생각하기에 문제를 일으키는 코드의 비트를 포함 시켰습니다. libGDX와 scene2d에 대해 아직 상당히 익숙하지 않기 때문에 setX() setY()와 setPosition (x, y) 메소드 사이의 차이점에 익숙하지 않습니다.libGDX MoveToAction nullPointerException
나는 또한 정확하게 델타와 parentAlpha이 어떻게 제대로
내가
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.scenes.scene2d.actions.MoveToAction.begin(MoveToAction.java:26)
at com.badlogic.gdx.scenes.scene2d.actions.TemporalAction.act(TemporalAction.java:48)
at com.badlogic.gdx.scenes.scene2d.actions.SequenceAction.act(SequenceAction.java:65)
at com.badlogic.gdx.scenes.scene2d.Actor.act(Actor.java:85)
at com.chiefpeanut.noodle.Tony.act(Tony.java:48)
at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:48)
at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:225)
at com.chiefpeanut.noodle.GameScreen.render(GameScreen.java:54)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
내 플레이어 클래스의 중요한 부분 얻는 오류를 사용하는 것에 대해 좀 더 알고 싶습니다
public class Tony extends Actor{
public Rectangle bounds;
public float posX;
public float posY;
MoveToAction jumpUp;
MoveToAction jumpDown;
public Tony() {
posX = 10f;
posY = 10f;
bounds = new Rectangle();
setHeight(100);
setWidth(100);
//scale(1, 1);
setPosition(10, 10);
setX(10f);
setY(10f);
setPosition(10, 10);
jumpUp = new MoveToAction();
jumpUp.setPosition(10, 80);
jumpUp.setDuration(2f);
jumpDown = new MoveToAction();
jumpDown.setPosition(10, 10);
jumpDown.setDuration(2f);
}
public void act(float delta){
super.act(delta);<<--------SHOWS ERROR OCCURRING HERE------
updateBounds();
}
public void jump() {
addAction(Actions.sequence(jumpUp, jumpDown));
}
public void draw(SpriteBatch batch, float parentAlpha){
batch.draw(Assets.textureTony, getX(), getY(), getWidth(), getHeight());
}
}
내 GameScreen 클래스의 중요한 부분에 관해서는, 내가 가진
public class GameScreen implements Screen, GestureListener {
MyGame game;
OrthographicCamera camera;
static SpriteBatch batch;
Stage stage;
Tony player;
Array<Block> blocks;
public GameScreen(MyGame game) {
this.game = game;
camera = new OrthographicCamera();
camera.setToOrtho(false, 1920, 1080);
camera.update();
player = new Tony();
batch = new SpriteBatch();
stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
stage.addActor(player);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
stage.act(delta);//<<----SHOWS ANOTHER ERROR OCCURRING HERE-------
stage.draw();
System.out.println("rendered");
if(Gdx.input.isKeyPressed(Keys.W)){
player.jump();
}
if(Gdx.input.isKeyPressed(Keys.D)){
//player.testMove();
System.out.println(player.getX());
}
}
@Override
public void resize(int width, int height) {
}
@Override
public void show() {
Gdx.input.setInputProcessor(new GestureDetector(this));
}
@Override
public void hide() {
Gdx.input.setInputProcessor(null);
}
}
나는 나의 렌더링을 잘못 사용하고 있다고 가정하기 시작했다. - 나는 5 개의 다른 튜토리얼에서 벗어나기 때문에 아마 맞을 것이다. 그러나 스택 트레이스에서 MoveToAction.java:26 오류를 클릭하면 나에게 line 26 on This document (on github) "startX = actor.getX();"라는 줄에 오류가 있습니다. 나는 매우 혼란스러워하고 며칠 동안 다른 일을 시도하고 내가 뭘 잘못하고 있는지 알아 내야 만합니다.
도움 주셔서 대단히 감사합니다.
편집 : 그것은 문자를 보여합니까 점프를 수행하지만 그는 다시 게임 충돌 내려 오는 한 번. –