游戏角色项目LibGDX
我正在做一个简单的2D platformer游戏,玩家在游戏中行走并收集物品(如枪、剑等)。这是我的玩家(或角色) 我还有我的项目类。当玩家与这个类精灵(和矩形)碰撞时,玩家应该获得新的力量(比如射击等等…) 这是我的新动力课。在这种情况下,新的力量正在形成游戏角色项目LibGDX,libgdx,items,Libgdx,Items,我正在做一个简单的2D platformer游戏,玩家在游戏中行走并收集物品(如枪、剑等)。这是我的玩家(或角色) 我还有我的项目类。当玩家与这个类精灵(和矩形)碰撞时,玩家应该获得新的力量(比如射击等等…) 这是我的新动力课。在这种情况下,新的力量正在形成 public class PlayerBullet extends ItemObject{ private Sprite sprite; private Rectangle full; public Player
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 */
}
那么我需要如何为我的玩家添加这种力量呢?我知道我可以在我的Coolgay
(玩家类)中有很多布尔值,甚至PlayerBullet
对象,并将它们全部设置为null,然后如果玩家与我的枪
类发生碰撞,我可以创建新对象,等等。。。但我相信还有其他办法。
在你的玩家类中引用一个“ItemObject”,不要初始化它。此参考将跟踪您当前的通电情况。当玩家走过精灵时,将参照设置为该对象。现在,当您想要执行特定于项目的操作时,请将这些操作/方法放在powerup类中,在您的示例中是PlayerBullet。现在你不需要检查你的玩家有哪些物品,你可以有效地执行特定物品的动作。
酷哥班:
public class CoolGuy extends GameObject {
private Rectangle bottom, left, right, top, full;
private Sprite sprite;'
ItemObject currentItem;
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);
}
public void equipItem(ItemObject item){
currentItem = item;
}
/* lots of code here */
}
您可以调用此equipItem()方法并将与player碰撞的对象传递给它。要使用通电,您可以向PlayerBullet或Gun添加另一种方法:
public void ItemUsed(){
//item use effect
}
然后在Player中创建另一个方法,并从该方法调用ItemUsed:
public void useItem(){
//check if player has any item
if(currentItem != null){
//if it has then use item
currentItem.useItem();
}
}
当然,如果你想一次装备多个物品,你必须添加一个ArrayList或ArrayList
这只是一个示例或想法,说明如何实现您想要的。你需要做一些额外的事情来让它工作。@user3334375你只需要仔细地画这个方框。也就是说,如果你用这个枪电源盒给了一些分数,检查一下,如果分数被计算了,然后移除这个盒子。 比如说
if (!powerboxscored){Draw power box} //
此方法采用powerboxscored布尔值。
如果布尔值为false,它将绘制此框,直到布尔值变为true,并且只有在您的代码中添加电源时才会变为true
我希望这会有帮助 有无数种方法可以做到这一点,您已经提到了最直接的方法之一。不知道你到底在问什么。好吧,但如果我有20件东西?然后我必须在我的player类中拥有所有items对象。我不认为这是个好主意…把他们列在一个清单上。或者使用一个布尔数组,其中每个索引对应一个项类型。
public void useItem(){
//check if player has any item
if(currentItem != null){
//if it has then use item
currentItem.useItem();
}
}
if (!powerboxscored){Draw power box} //