下面的代碼是爲障礙物生成隨機位置。障礙物從右向左移動,所以我使用它的x座標向左移動它。當障礙物到達屏幕的左側時,它又被放置在某個隨機位置。但是這裏的問題是,有時障礙物會處於相同的位置或者它們太靠近了。隨機產生的障礙有時放在相同的位置
public void Randomize()
{
int random = rand.Next(1,200);
switch (random)
{
case 200:
if (Texture.crabrect.X < 0)
Texture.crabrect.X = rand.Next(1000,1500);
break;
case 12:
if (Texture.samosarect.X < 0)
Texture.samosarect.X = rand.Next(1000, 2000);
break;
case 10:
if (Texture.mirchirect.X < 0)
Texture.mirchirect.X = rand.Next(1800,3000);
break;
case 80:
if (Texture.mushroomrect.X < 0)
Texture.mushroomrect.X = rand.Next(1000, 2000);
break;
case 195:
if (Texture.laddoorect.X < 0)
Texture.laddoorect.X = rand.Next(1000, 2000);
break;
case 56:
if (Texture.stonerect.X < 0)
Texture.stonerect.X = rand.Next(1000, 2000);
break;
case 177:
if (Texture.cactusrect.X < 0)
Texture.cactusrect.X = rand.Next(1000, 2000);
break;
}
}
然後檢查是否已有另一個對象放置障礙物,如果是這種情況,請重試。 –
@NicoSchertler你是對的,但如果他們沒有放在確切的位置......就像一個是200,另一個是210,那麼該怎麼辦? – pravin
檢查紋理的範圍('position'到'position + width')是否相交。有幾種情況需要檢查(例如'p1'和'p1 + w1'都小於'p2',然後顯然沒有交集)。 –