Я работаю над простой 2D-платформерной игрой, где игрок ходит и собирает предметы (например, оружие, меч и т. Д.). Итак, вот мой игрок (или персонаж)Элементы персонажей игры LibGDX
public class CoolGuy extends GameObject {
private Rectangle bottom, left, right, top, full;
private Sprite sprite;
public CoolGuy(){
full = new Rectangle(0, 0, 50, 98);
bottom = new Rectangle(0, 0, 50, 15);
top = new Rectangle(0, 83, 50, 15);
left = new Rectangle(0, 15, 25, 68);
right = new Rectangle(25, 15, 25, 68);
sprite = new Sprite(TextureManager.coolGuy);
sprite.setSize(50, 98);
}
/* lots of code here */
}
также у меня есть класс предмета. Когда игрок сталкивается с этим классом спрайт (и прямоугольник) игрока должен получить новую власть (как стрельба и так далее ...)
public class Gun extends ItemObject{
private Sprite sprite;
private Rectangle full;
public Gun(int x, int y){
sprite = new Sprite(TextureManager.gunItem);
sprite.setSize(25, 15);
full = new Rectangle(0, 0, 25, 15);
setPosition(x, y);
}
@Override
public int hits(Rectangle r) {
if(full.overlaps(r)){
return 1;
}
return -1;
}
/* lots of code here */
}
А вот мой новый класс мощности. В этом случае стреляет новая сила.
public class PlayerBullet extends ItemObject{
private Sprite sprite;
private Rectangle full;
public PlayerBullet(){
sprite = new Sprite(TextureManager.playerBullet);
sprite.setSize(15, 15);
full = new Rectangle(0,0,15,15);
}
@Override
public int hits(Rectangle r) {
if(full.overlaps(r)){
return 9;
}
return -1;
}
/* A lot of code here */
}
Итак, как мне нужно добавить эту мощность в плеер? Я знаю, что у меня могло бы быть много логических и даже PlayerBullet
объектов в моем CoolGuy
(класс игрока) и установить их все на null, а позже, если игрок столкнется с моим классом Gun
, я мог бы создать новый объект и так далее ... Но я верю есть другой путь.
Есть бесконечные способы сделайте это, и вы уже упоминали один из самых простых способов. Не уверен, что вы на самом деле спрашиваете. – Tenfour04
Хорошо, но если у меня есть 20 предметов? Тогда у меня должны быть все объекты объектов в моем классе. Я не думаю, что это хорошая идея ... – David
Поместите их в список. Или используйте логический массив, где каждый индекс соответствует типу элемента. – Tenfour04