Java 如果对象与同一对象碰撞

Java 如果对象与同一对象碰撞,java,arraylist,libgdx,collision,Java,Arraylist,Libgdx,Collision,我不知道如何与同一ArrayList中的同一对象发生碰撞,但在lbgdx中却不知道如何与该对象发生碰撞。有可能吗?我该怎么做 如何创建对象: private static List<Tree> objects = new ArrayList<Tree>(); for (int i = 0; i<400 ; i++ ) { objects.add(new Tree()); } 它们随机地在玩家周围繁殖,有时它们彼此领先 树类: p

我不知道如何与同一ArrayList中的同一对象发生碰撞,但在lbgdx中却不知道如何与该对象发生碰撞。有可能吗?我该怎么做

如何创建对象:

private static List<Tree> objects = new ArrayList<Tree>();


for (int i = 0; i<400 ; i++ ) {
        objects.add(new Tree());
        }
它们随机地在玩家周围繁殖,有时它们彼此领先

树类:

public class Tree {
public TextureRegion sprite;
public Vector2 position;
private int x, y, varx, vary;
public int size;
private Random r;
public boolean injunglex, injungley = false;
public int myLevel;
public Rectangle objrect, objrectUP;
public Rectangle playerrect;
public boolean active = false;
private int random, tolis=700;
public Tree() {
    GameRender.medis++;
    size = GameRender.tilesize*5;
    position = new Vector2(x, y);
    r = new Random();
    random = r.nextInt(2);
    int zenkas = r.nextInt(2);
    if(AssetLoader.load){
    position.y = AssetLoader.getInt("treey"+GameRender.medis);
    position.x = AssetLoader.getInt("treex"+GameRender.medis);  
    }else{
        position.y = getPositionY();
        position.x = getPosition();     
    while(position.y>GameRender.playery-100&&position.y<GameRender.playery+100
            &&position.x>GameRender.playerx-100&&position.x<GameRender.playerx+100){
        position.y = getPositionY2();
        position.x = getPosition2();
       }
    }
}
public int getPosition() {
    int x;
    int zenkasx = r.nextInt(2);
    int renkam = r.nextInt(2);
    int renkam2;
    if(renkam==1){renkam=r.nextInt(50); renkam2=0;} else {renkam=0; renkam2=r.nextInt(50);}
    if(zenkasx==0){
        x = GameRender.playerx+renkam+(r.nextInt(tolis));
    }else x = GameRender.playerx-renkam2-(r.nextInt(tolis));
    return x;
}
public int getPosition2() {
    int x;
    int zenkasx = r.nextInt(2);
    int renkam = r.nextInt(2);
    int renkam2;
    if(renkam==1){renkam=0; renkam2=+r.nextInt(100);} else {renkam=r.nextInt(100); renkam2=0;}
    if(zenkasx==0){
        x = GameRender.playerx+renkam+(r.nextInt(tolis));
    }else x = GameRender.playerx-renkam2-(r.nextInt(tolis));
    return x;
}
public int getPositionY() {
    int x;
    int zenkasx = r.nextInt(2);
    int renkam = r.nextInt(2);
    int renkam2;
    if(renkam==1){renkam=r.nextInt(50); renkam2=0;} else {renkam=0; renkam2=r.nextInt(50);}
    if(zenkasx==0){
        x = GameRender.playery+renkam+(r.nextInt(tolis));
    }else x = GameRender.playery-renkam2-(r.nextInt(tolis));
    return x;
}
public int getPositionY2() {
    int x;
    int zenkasx = r.nextInt(2);
    int renkam = r.nextInt(2);
    int renkam2;
    if(renkam==1){renkam=100; renkam2=+r.nextInt(200);} else {renkam=r.nextInt(200); renkam2=100;}
    if(zenkasx==0){
        x = GameRender.playery+renkam+(r.nextInt(tolis/3));
    }else x = GameRender.playery-renkam2-(r.nextInt(tolis/3));
    return x;
}
private TextureRegion getSprite() {
    int medis = r.nextInt(3)+1;
         if(medis==1) sprite = AssetLoader.tree1;
    else if(medis==2) sprite = AssetLoader.tree2;
    else if(medis==3) sprite = AssetLoader.tree3;
    return sprite;
} 
public void createMe() {
    GameRender.batch.draw(sprite, position.x, position.y, size, size);  
}

}你的问题不清楚


我想知道有没有一种方法可以在一棵树的周围创建一个矩形,如果这个矩形与另一棵树重叠,那就是:做点什么

但我会尽我所能:

您可以在树上创建两个框。要做到这一点,请选中类似“如果object.box与otherObject.box重叠”

但是,您也可以通过使用双[][],然后将其与坐标一起存储来获得更详细的碰撞框

基本上,您可以将坐标放在双精度[][]中,然后可以检查另一棵树是否在双精度[][]中,如果在双精度[][]中,则它们发生了碰撞。 可以将坐标设置为1,将空气设置为0


例如,如果double[treeX][treeY][treeZ]==1,在这里进行冲突处理。

树的equals方法是什么样子的?如果你问的是这个问题,那么添加了树类。我想知道的是,有一种方法可以在树的周围创建一个矩形,如果这个矩形与另一棵树重叠,那么相同的矩形:做点什么。是的,这是可能的。如果你想知道怎么做,那就问吧。