Я довольно много начинаю, когда дело доходит до разработки игр, особенно с Libgdx, пока я сделал это, поэтому я могу загрузить любую карту .tmx или сохранить ее, я, вероятно, собираюсь попробовать и посмотреть, как работает процессуальное создание ландшафтов, но прямо сейчас я получаю эту странную ошибку, когда я удаляю блок (этот блок состоит из TiledMapTile и body2d), я удаляю его и после удаления я создавая меньшую сущность, которая также будет телом, который представляет собой блок, который я только что удалил, как падение для игрока, это ошибка, которую я получаю, когда я нажимаю на блок, это происходит только после удаления первого блока, поэтому один блок удаляется и создается небольшой объект, но если я попытаюсь сделать это во второй раз, игра перерывается, и появляется следующее:Java Libgdx странная ошибка с текстурами и арреалистами
неисправимая ошибка была обнаружена с помощью Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) при рс = 0x00007ffb8ecd9f58, PID = 6580, TID = 0x0000000000002474
JRE версии: Java (TM) SE Runtime Environment (8.0 _121-b13) (сборка 1.8.0_121-b13) Java VM: Java HotSpot (TM) 64-разрядная серверная VM (25.121-b13 смешанный режим windows-amd64 сжатый oops) Проблемный фрейм: C [ntdll.dll + 0x39f58 ]
Не удалось написать основной дамп. Минидампы не включена по умолчанию на клиентских версиях Windows,
Файл отчета об ошибке с дополнительной информацией сохраняется как: C: \ Libgdx проекты Fedora \ WINDOWS \ Generator Test \ ядро \ активы \ hs_err_pid6580.log
Если вы хотите отправить отчет об ошибке, посетите: http://bugreport.java.com/bugreport/crash.jsp Авария произошла за пределами виртуальной машины Java в собственном коде. См. Проблемную рамку для сообщения об ошибке.
[произошла ошибка при передаче сообщений об ошибках, ид 0xc0000005]
Это журнал ошибок:
Это где я удалить блоки:
public void destroyTerrain(ArrayList<Block> terrain, ArrayList<BlockDrop> blockDropsList) {
int x = Gdx.input.getX()/32;
int y = (Gdx.graphics.getHeight() - Gdx.input.getY())/32;
Iterator<Block> iterator = terrain.iterator();
while (iterator.hasNext()) {
Block block = iterator.next();
if (x == (int) block.getBody().getPosition().x && y == (int) block.getBody().getPosition().y) {
PolygonShape shape = (PolygonShape) block.getBody().getFixtureList().get(0).getShape();
world.destroyBody(block.getBody());
iterator.remove();
TiledMapTileLayer.Cell cell = ((TiledMapTileLayer) map.getLayers().get(0)).getCell(x, y);
Texture tex = cell.getTile().getTextureRegion().getTexture();
// this is where the error is happening, when I'm creating a second blockDrop
BlockDrop blockDrop = new BlockDrop(screen, x, y, shape.getRadius() * 16, shape.getRadius() * 16);
blockDrop.setTexture(tex);
blockDropsList.add(blockDrop);
cell.setTile(null);
}
}
}
Это класс BlockDrop:
public class BlockDrop extends Entity {
public BlockDrop(PlayGame screen, int x, int y, float width, float height) {
super(screen);
posX = x;
posY = y;
type = BodyDef.BodyType.DynamicBody;
density = 0.2f;
friction = 0.4f;
shape = new PolygonShape();
((PolygonShape) shape).setAsBox(width, height, new Vector2((x/32) + width * 2, (y/32) + height * 2), 0);
createBody();
}
}
И это Entity:
abstract public class Entity {
private PlayGame screen;
float posX, posY;
private Body body;
Shape shape;
BodyDef.BodyType type;
float density;
float friction;
SpriteBatch batch;
Sprite sprite;
Entity(PlayGame screen) {
this.screen = screen;
batch = new SpriteBatch();
sprite = new Sprite();
}
void createBody() {
BodyDef bodyDef = new BodyDef();
bodyDef.type = type;
bodyDef.position.set(posX, posY);
body = screen.getWorld().createBody(bodyDef);
body.setUserData(this);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = shape;
fixtureDef.density = density;
fixtureDef.friction = friction;
body.createFixture(fixtureDef);
dispose();
}
public void setTexture(Texture tex){
sprite.setTexture(tex);
}
public void render() {
sprite.setBounds(posX, posY, shape.getRadius(), shape.getRadius());
batch.begin();
sprite.draw(batch);
batch.end();
}
public String toString() {
return getClass().getSimpleName();
}
public Body getBody() {
return body;
}
public void dispose() {
shape.dispose();
batch.dispose();
}
}
Любая помощь будет высоко ценится, это может быть просто простой немой вещь и код может быть беспорядок прямо сейчас, но я не могу показаться, обойти это
Да, в конце концов, я попытался отделить вещи, я также обнаружил, что проблема не в том, что текстуры не анализируются с помощью методов, поэтому проблема была в том, что я отобразил новый блок – Gawhisper
, каждый из которых имеет собственный spriteBatch, странный ? – Aryan