その中にタッチパッドがある GameScreen クラスがあります。タッチパッドの getKnobPercentY を取得する GameScreen クラス内にメソッド (setTouchpadY()) があります。
public float setTouchpadY() {
return touchpad.getKnobPercentY();
}
私の WorldRenderer クラスである render() メソッドでは、タッチパッドでスプライトを回転させようとしています。gs は GameScreen クラスです
public void render() {
//render stuff
moveCamera(leon.getPosition().x, CAMERA_HEIGHT / 2);
spriteBatch.setProjectionMatrix(cam.combined);
spriteBatch.begin();
drawVillage();
drawTile();
drawLeon();
spriteBatch.end();
if (leon.isAiming()) {
leonAimArmSpriteR.rotate(gs.setTouchpadY()); //This line causing crash
}
}
画面と入力プロセッサを実装しているため、タッチパッドとボタンを Gamescreen クラスに入れました。これまでのところ、それらを WorldRenderer に入れようとしましたが、運がありませんでした。ここに私の logcat/コンソールがあります。これは、デスクトップ バージョンを実行しようとした場合です。
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NullPointerException
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)
Caused by: java.lang.NullPointerException
at com.me.RE4.view.WorldRenderer.render(WorldRenderer.java:142)
at com.me.RE4.screens.GameScreen.render(GameScreen.java:151)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:191)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
編集だから、GameScreenをインスタンス化していないことがわかりました.WorldControllerがnullであると言っていました。そのため、WorldRenderer で WorldController をインスタンス化しましたが、GameScreen 内の TouchpadY() メソッドが null であり、ブレーク ポイントを設定すると、あらゆる種類の変数が null として表示されます。