2013-10-13 5 views
-1

Я попытался это, чтобы получить счет в моей игре, и я попытался это:Как я могу получить правильный счет?

foreach (stella stella in stelle) 
      if (stella.rettangolo.Intersects(giocatore.rect)) 
      { 

       score=score+10; 

      } 

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

+0

Можете вложить какие-либо дополнительные детали в свой вопрос? В текущей форме практически невозможно увидеть, что не так, и что именно нужно исправлять. – Cyral

ответ

3

Вы можете добавить дополнительный флаг, который сообщает вам, была ли выбрана звезда. Это должно быть поле в классе stella. Давайте назовем это ...

public bool captata; //I'll go with some Google translated Italian. 

Когда начинается уровень, инициализировать его со значением false:

foreach (stella stella in stelle) 
{ 
    stella.captata = false; 
} 

Когда игрок пересекает звезду, вы установите флаг соответствующим образом. В то же время вы проверяете только на столкновение, если звезда еще не была поднята.

foreach (stella stella in stelle) 
    if ((!stella.captata) && (stella.rettangolo.Intersects(giocatore.rect))) 
    { 
     score=score+10; 
     stella.captata = true; 
    } 

Другой способ - полностью удалить звезду из коллекции звезд.

for (int i = stelle.Count - 1; i >= 0; --i) 
{ 
    if (stelle[i].rettangolo.Intersects(giocatore.rect)) 
    { 
     score = score + 10; 
     stelle.RemoveAt(i); 
    } 
} 
+0

ВЫ БОЛЬШЕ !!! – user2851295

+0

+1 для итальянского перевода. : D –

0

Вам необходимо изменить логику игры, чтобы вы либо удалили «звезду» из коллекции «звезд», когда игрок приблизился к ней, либо чтобы вы ее пометили, как только ее затронул игрок.

В зависимости от того, что логика игры, вы можете только иметь игрок получает очки, когда они начинают прикасаясь звезду, но не тогда, когда они еще прикасаясь к нему. вы можете иметь bool, isTouchingStar и установить его в true, если обнаружите, что игрок касается его.

+0

Я пробовал его с bool, но он все равно не работает. Функции столкновения и звезда исчезают, когда я прикасаюсь к ней. – user2851295

+0

Это именно то, что должен делать код, но я думаю, что автор неправильно понял вас. – Cyral

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