-1

ゲームでスコアを取得するためにこれを試しましたが、これを試しました:

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

                score=score+10;

            }

星の近くに長時間滞在すると、星が見えなくてもスコアが増加し続けるため、機能しますが、うまくいきません。どうすれば修正できますか?

4

2 に答える 2

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;
   }

もう 1 つの方法は、星のコレクションから星を完全に削除することです。

for (int i = stelle.Count - 1; i >= 0; --i)
{
   if (stelle[i].rettangolo.Intersects(giocatore.rect))
   {
       score = score + 10;
       stelle.RemoveAt(i);
   }
}
于 2013-10-13T13:01:59.080 に答える
0

プレイヤーが近づいたら「星」コレクションから「星」を削除するか、プレイヤーが触れたものとしてマークするように、ゲーム ロジックを変更する必要があります。

ゲームのロジックによっては、プレーヤーが星に触れ始めたときにのみポイントを獲得することもできますが、星に触れている間はポイントを獲得できません。bool を持つことができisTouchingStar、プレーヤーがそれに触れていることを検出した場合は true に設定します。

于 2013-10-13T12:56:37.860 に答える