私があなただったら、2 つのテクスチャ間のピクセル間をチェックしません。ただし、マップに対して 1 つのポイントのみをチェックすることはそれほど悪くありません。
//In Class-scope:
Color[] CollisionMapData;
Texture2D CollisionMap;
public void LoadContent()
{
CollisionMap = Content.Load<Texture2D>("map");
CollisionMapData = new Color[CollisionMap.Width * CollisionMap.Height];
CollisionMap.GetData<Color>(CollisionMapData);
}
public Boolean Collision(Vector2 position)
{
int index = (int)position.Y * CollisionMap.Width + (int)position.X;
if (index < 0 || index >= CollisionMapData.Length) //Out of bounds
return true;
if (CollisionMapData[index] == Color.Black)
return true;
return false;
}
プレーヤー スプライト全体をマップに対してチェックするには、プレーヤー スプライトの各ピクセルに対して Collision メソッドを呼び出し、適切なポイントを取得するための vector2 を作成する必要があります。いくつかのポイントを確認する方がはるかに簡単です (たとえば、左上、中央上部、右上、左、右、左下、中央下、右下。側面は既にテストされているため、中央を確認する必要はありません)。