我有一个类 Sword ,它被实例化以在我的游戏中创建多个对象并将它们保存在Array结构中。如何从另一个类中找到 Sword 类的每个对象的属性?
此代码分配并生成剑渲染器类:
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类的内容)?
答案 0 :(得分:1)
在 Sword 类中添加一个getter。
// Returns the sword x location
public int getLocX()
{
return this.x;
}
有很多方法可以解决这个问题,即使用Vector代替。实施取决于你。
在旁注中,我高度建议你使用Box2D在libgdx中进行碰撞检测。