2017-01-01 3 views
0

Это игра «Защита башни». У меня есть класс, называемый солдатом.Создание системы таргетинга в Java

if(wave1==true){ 
     for(int i=0;i<(wave*10);i++){ 
      handler.addObject(new soldier(getX(), getY(), ID.soldier, handler)); 
      try { 
      // System.out.println(i); 
       Thread.sleep(500); 

      } catch (InterruptedException e) { 

      } 

     } 
     wave++; 
     wave1=false; 
     try { 
     // System.out.println(i); 
      Thread.sleep(WT); 

     } catch (InterruptedException e) { 

     } 
     } 

Каждый раз, когда этот код называется это солдат получает порождало 10 раз для каждой волны, но у меня есть один вопрос. Я хотел бы, чтобы башня 1 убила самого дальнего солдата в радиусе действия. Код убийства:

private void collision() { 
    for(int i=0; i< Handler.object.size();i++){ 
     GameObject tempObject = Handler.object.get(i); 
     if(tempObject.getID()== ID.ST1){ 
      if(getBounds().intersects(tempObject.getBounds())){   
       Hsol=(Hsol-1); 

       if(Hsol<=0){ 
        handler.removeObject(this); 

       } 
      }    
     } 
     } 
    } 

Так что я знаю, что нужно сделать расстояние формулу, чтобы найти, какие из них ближе, но я не уверен, как это сделать.

+0

Просьба уточнить, Вы хотите две вещи. 1. что солдат 1 не погибнет. 2. Чтобы башня 1-го убила самого дальнего солдата в радиусе действия. Это верно? – SteelToe

+3

Я не читал дальше 'if (wave1 = true)'. Вероятно, вы хотите 'if (wave1 == true)' или намного лучше: 'if (wave1)'. Я также попытался бы выбрать гораздо лучшие имена: наличие булевой волны1 и целочисленной волны довольно сбивает с толку. WT, Hsol, ID не уважают соглашения об именах, ничего не значат и делают ваш код очень трудным для чтения, даже для вас. –

+0

@JBNizet У меня есть идентификатор нерестовой системы. Мне просто нужна помощь, чтобы система таргетинга для правильной работы башни. –

ответ

1

Даны две точки (x1, y1) и (х2, у2), расстояние формула

√ [(x1-x2)^2 + (Y1-Y2)^2]

Так , используя эту формулу, вы можете пройти через каждого солдата и посмотреть, какая из них ближе всего к точке атаки.

+0

Я понимаю это. id, как башня, чтобы ударить по дальнему пути. (а не прямую линию) и атаковать это. когда их другие солдаты находятся на границе, но не самые дальние –

+0

Так что это похоже на тип защиты башни, где солдаты обходят препятствия или находятся по фиксированному пути, а физически ближе к пятну не обязательно те, которые на самом деле собираются попасть туда первым? –

+0

Да, это его башня-защита, (я забыл поставить это в объяснении, плохо отредактируйте его прямо сейчас) –

0
private void collision() { 
    for(int i=0; i< Handler.object.size();i++){ 
     GameObject tempObject = Handler.object.get(i); 
     if(tempObject.getID()== ID.ST1){ 
     if(this==handler.object.get(3)){ 
      if(getBounds().intersects(tempObject.getBounds())){ 
       Hsol=(Hsol-1); 

       if(Hsol<=0){ 
        handler.removeObject(this); 
        HUD.coin=(HUD.coin+100); 
        instances=(instances-1); 

        //System.out.println(HUD.coin); 
       } 
      } 


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