3日間検索しましたが、解決策が見つかりませんでした。コードは次のとおりです。
if (keyboardState.IsKeyDown(Keys.Right))
{
for (int i = GlobalClass.BlocksPositions.Count - 1; i > 0; i--)
{
if (new Rectangle((int)GlobalClass.BlocksPositions[i].X, (int)GlobalClass.BlocksPositions[i].Y, bT.Width, bT.Height).Intersects(new Rectangle((int)Position.X, (int)Position.Y, Texture.Width, Texture.Height)))
{
c = 0;
}
else
{
c = 1;
}
}
if (c == 1)
{
Position.X += Speed;
}
}
各ブロック位置は、画面をクリックして作成できるブロックと同じであり、新しいブロック位置がリストに追加されます。基本的に、BlockPositionリストにブロック座標のリストがあります。次に、各ブロック位置の条件を渡します。条件は、ブロック位置ごとに長方形を作成し、プレーヤー用に1つを作成します...衝突が発生した場合、プレーヤーはその方向に移動しません。コードを試してみると、私のキャラクターはリストの最初の要素とのみ衝突し、他の要素とは衝突しません。最初の要素を削除すると、次の要素と衝突しますが、他の要素とは衝突しません。このコードを次のようなものに置き換えようとしたので、すべての変数はFINEです。
if (keyboardState.IsKeyDown(Keys.Right))
{
for (int i = GlobalClass.BlocksPositions.Count - 1; i > 0; i--)
{
if (new Rectangle((int)GlobalClass.BlocksPositions[i].X, (int)GlobalClass.BlocksPositions[i].Y, bT.Width, bT.Height).Intersects(new Rectangle((int)Position.X, (int)Position.Y, Texture.Width, Texture.Height)))
{
GlobalClass.BlocksPositions.RemoveAt[i];
}
}
}
同じことですが、ここで衝突した場合、リストの要素を削除します。同じ状態ですが、試してみると、すべての要素が検出され、触れた要素が削除されます。foreach関数を試しましたが、同じ結果が得られました。どうしたの?私はすでにdoes変数を使って多くのことをしているので、問題はそれらの値からではなく、私がそれらを使って何をするかによって生じると確信しています。助けてください!(: