Вы можете добавить дополнительный флаг, который сообщает вам, была ли выбрана звезда. Это должно быть поле в классе 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);
}
}
Можете вложить какие-либо дополнительные детали в свой вопрос? В текущей форме практически невозможно увидеть, что не так, и что именно нужно исправлять. – Cyral