Когда я запускаю программу, из отладочного рендера берется только тело. Однако ни одна из текстур не прорисована.
ниже - код моего класса состояния игры.
public static Box2DDebugRenderer debug;
public static EntityManager entityManager;
public static Tile[][] tiles;
public static int spawnX, spawnY;
public static int worldWidth, worldHeight;
public static World world;
public static RayHandler rayHandler;
public GameState(StateManager stateManager) {
super(stateManager);
world = new World(new Vector2(0, -16f), false);
rayHandler = new RayHandler(world);
debug = new Box2DDebugRenderer();
createPlayer();
rayHandler.setAmbientLight(.2f);
}
public void createPlayer() {
entityManager = new EntityManager(c, new Player(c, spawnX*Tile.TILESIZE, spawnY*Tile.TILESIZE + 200, 50, 100, 1f));
}
public void tick(float delta) {
world.step(1/60f, 6, 2);
rayHandler.update();
entityManager.tick();
batch.setProjectionMatrix(camera.combined);
rayHandler.setCombinedMatrix(camera.combined.cpy().scl(PPM));
}
public void render() {
for(int y = 0; y < tiles.length; y++) {
for(int x = 0; x < tiles[y].length; x++) {
if(tiles[x][y] != null)
tiles[x][y].render(batch);
}
}
rayHandler.updateAndRender();
entityManager.render(batch);
if(ControlCenter.DEBUG)
debug.render(world, camera.combined.scl(PPM));
}
ниже - код моего класса игрока.
public class Player extends Creature {
private PointLight light;
public Player(ControlCenter c, float x, float y, int width, int height, float density) {
super(c, x, y, width, height, density);
this.x = x;
this.y = y;
this.width = width;
this.height = height;
speed = 5;
type.add("player");
light = new PointLight(GameState.rayHandler, 100, Color.BLACK, 250/PPM,
body.getPosition().x,
body.getPosition().y);
}
@Override
public void tick() {
light.setPosition(body.getPosition().x,
body.getPosition().y);
inputUpdate();
cameraUpdate();
}
public void inputUpdate() {
int horizontalForce = 0;
if(Gdx.input.isKeyPressed(Input.Keys.A)) {
horizontalForce = -1;
}
if(Gdx.input.isKeyPressed(Input.Keys.D)) {
horizontalForce = 1;
}
if(Gdx.input.isKeyJustPressed(Input.Keys.W)) {
body.applyForceToCenter(0, 1000, false);
}
if(Gdx.input.isKeyPressed(Input.Keys.P)) {
System.exit(1);
}
body.setLinearVelocity(horizontalForce*speed, body.getLinearVelocity().y);
}
public void cameraUpdate() {
Vector3 position = ControlCenter.camera.position;
position.x = body.getPosition().x * PPM; //getting back to scale by *PPM
position.y = body.getPosition().y * PPM;
ControlCenter.camera.position.set(position);
ControlCenter.camera.update();
}
public void render(SpriteBatch batch) {
batch.draw(Images.temp, body.getPosition().x*PPM - width/2,
body.getPosition().y*PPM - height/2, width, height);
}
}
при запуске программы ошибки не отображаются. Я не уверен, что это моя настройка камеры или что-то.
ниже приведен код настройки моей камеры в основном классе приложений:
float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();
camera = new OrthographicCamera();
camera.setToOrtho(false, width/SCALE, height/SCALE);