Libgdx - 从另一个类中查找对象属性

时间:2014-10-26 19:13:58

标签: java static libgdx

我有一个类 Sword ,它被实例化以在我的游戏中创建多个对象并将它们保存在Array结构中。如何从另一个类中找到 Sword 类的每个对象的属性?

How my spawned swords look

此代码分配并生成剑渲染器类:

private List<Sword> swords = new ArrayList<Sword>();

然后在公共Renderer()方法中我做:

for (int i = 0; i<10 ; i++ ) {
            swords.add(new Sword());
        }

在render()中,它们显示在屏幕上:

for (Sword sword : swords) {
    sword.createMe();
}

这是我的类:

 public class Sword {
    private TextureRegion sprite;
    private static int xx;
    private static int yy;
    private int x;
    private int y;
    private int size;
    private Random r;
    public Sword() {
        r = new Random();
        x = (r.nextInt(10))*GameRender.tilesize;
        y = (r.nextInt(10))*GameRender.tilesize;
        size = GameRender.tilesize;
        sprite =getSprite();        
    }

    private TextureRegion getSprite() {
        int id = r.nextInt(2);
        System.out.println(id);
        if(id==1){
            sprite=AssetLoader.s1;
        }else sprite=AssetLoader.s2;
        return sprite;
    }

    public void createMeShape(){
        GameRender.shapeRenderer.rect(x, y, size, size);
    }

    public void createMe() {            
        GameRender.batch.draw(sprite, x, y, size, size);             
    }

    public static void Update() { }
}

那么如何从Render类中找到 x y 的值(我不能使用静态,因为它只会找到一个剑位置)进行碰撞检测或我如何检查剑x,y是否与playerx,playery相同(来自GameRenderer类的内容)?

1 个答案:

答案 0 :(得分:1)

Sword 类中添加一个getter。

// Returns the sword x location
public int getLocX()
{
    return this.x;
}

有很多方法可以解决这个问题,即使用Vector代替。实施取决于你。

在旁注中,我高度建议你使用Box2D在libgdx中进行碰撞检测。