Пишу свой проект для выпуска. Уже основа есть - тайловая система, система GameState`ов и т.д. Но когда дело дошло до создание игроков - то ничего дельного не вышло. Сразу скажу, что с фреймворком я знаком не ахти.
Вот основная ,так сказать, деталь моей игры:
public class MyGdxGame extends Game {
public static SpriteBatch batch;
Texture img;
public static final int V_WIDTH = 400;
public static final int V_HEIGHT = 208;
public static final float PPM = 100;
private GameLoader load;
@Override
public void create() {
batch = new SpriteBatch();
load = new GameLoader(this);
setScreen(load.getCurrentState()); // тут, как я понял, закрепляется основная сцена на фрейм
}
@Override
public void render() {
super.render();
}
@Override
public void dispose() {
batch.dispose();
img.dispose();
}
}
Но теперь перейдем к главному, к созданию врагов. Сначала хочу показать то, как я создавал игрока:
public class Player extends Sprite {
public World world;
public Body b2body;
public Player(World world) {
this.world = world;
definePlayer();
}
// create player
public void definePlayer() {
BodyDef bdef = new BodyDef();
bdef.position.set(32 / MyGdxGame.PPM, 200 / MyGdxGame.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
b2body = world.createBody(bdef);
FixtureDef fdef = new FixtureDef();
CircleShape shape = new CircleShape();
shape.setRadius(5 / MyGdxGame.PPM);
fdef.shape = shape;
b2body.createFixture(fdef);
}
// для реализации света
public Body getB2body() {
return b2body;
}
}
У меня есть класс
PlayScreen. Там я запускаю первый уровень: отрисовываю игрока, карту и вот, хотелось бы, врагов. Но врагов почему-то рисовать схожим способом с игроком никак не выходит.
Как я создаю игрока:
player = new Player(world); // create player
И рендеринг:
b2dr.render(world, gameCam.combined);
Если вы не поняли что-то, то
вот ссылка на гитхаб (на конкретный класс, где все это происходит)
Т.е при такой записи у меня не выходит того результата, которого я хочу добиться:
Enemy enemy;
...
...
enemy = new SimpleEnemy(world);
Вот класс
Enemy, который аналогичен классу
Playerpublic abstract class Enemy extends Sprite {
World world;
Body b2body;
public Enemy(World world) {
this.world = world;
}
// create enemy
public abstract void defineEnemy();
public World getWorld() {
return world;
}
public Body getB2body() {
return b2body;
}
}
И
SimpleEnemy:
public class SimpleEnemy extends Enemy {
public SimpleEnemy(World world) {
super(world);
defineEnemy();
}
@Override
public void defineEnemy() {
BodyDef bdef = new BodyDef();
bdef.position.set(32 + 10 / MyGdxGame.PPM, 200 + 10 / MyGdxGame.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
super.b2body = super.world.createBody(bdef);
FixtureDef fdef = new FixtureDef();
CircleShape shape = new CircleShape();
shape.setRadius(20 / MyGdxGame.PPM);
fdef.shape = shape;
super.b2body.createFixture(fdef);
}
}
Заранее благодарю за помощь!