2016-01-08 2 views
0

Я использую массив Libgdx для хранения своего собственного класса «Координаты». В другом классе я ссылаюсь на этот массив, чтобы увидеть, есть ли «блок» в линии зрения игрока. У меня есть все программирование строк, но я не могу понять, как увидеть, содержит ли Array «Координатор», как временный, который у меня есть. Кажется, я получил работу сLibgdx Array содержит

if(hex.getWorld().get(0).equals(tmp)) { 
    System.out.println("break"); 
    break; 
} 

но это работает только с одним из «Координатов». Я хочу, чтобы он работал со всеми «координатами». Хотя это, казалось бы, как он будет работать, он не делает:

if(hex.getWorld().contains(tmp, true)) { 
    System.out.println("break"); 
    break; 
} 

(если это не правильный код, просто отметим, что не копируется, я рукой написал это только сейчас) Это код, я используя в этой области.

.... 
    tmp = new Coordinate(); 
    for(int i = 1; i <= 5; i++){ 
     tmp.setX(Math.round((cam.direction.x * i) + cam.position.x)); 
     tmp.setY(Math.round(((cam.direction.y * i) + cam.position.y)/0.578f)); 
     tmp.setZ(Math.round((cam.direction.z * i) + cam.position.z)); 

     //System.out.println(tmp.toString(false)); 
     //System.out.println(hex.getWorld().get(0).toString(false) + " - " + tmp.toString(false)); 
     System.out.println(hex.getWorld().contains(tmp, true)); 

     if(hex.getWorld().contains(tmp, false)){ 
      System.out.println("break"); 
      break; 
     } 
    } 
//////////// BE-OND THIS POINT THE CODE IS CORRECT //////////// 
    float slope = (cam.direction.z)/(cam.direction.x); 
    if(spot != tmp){ 
     hex.instances.removeIndex(hex.instances.indexOf(i, true)); 
     spot = tmp; 

     float size = 0.578f; 
     float x = spot.getFormatedX(spot); 
     float y = (spot.getY() * size); 
     float z = spot.getFormatedZ(spot); 
     i = new ModelInstance(hex.getHex("red"), x, y, z); 
     i.transform.scale(size, size, size); 
     hex.instances.add(i); 
    } 
.... 

То есть быть побежал каждый игровой цикл, и я знаю, что я должен иметь это в mouseMoved() функции моего контроллера камеры, я этого не делаю. Переменная hex также является обычным классом, но она не будет иметь ничего общего с Array под номером hex.getWorld(). И массив установки, как это в классе:

Array<Coordinate> world = new Array<Coordinate>(); 
+0

Вы написали правильный метод .equals для вашего класса Coordinate? – Tenfour04

+0

Я использовал ... позвольте мне проверить ... – mttprvst13

ответ

0

я понял, что моя equals() функция в моем Coordinate классе взял в

equals(Coordinate coord){ вместо equals(Object cord){. Это заставило его работать.

Спасибо, @ Tenfour04, за ваш комментарий Did you write a proper .equals method for your Coordinate class?!

Смежные вопросы