2012-11-25 36 views
0

所以我想用我當前的代碼來檢測我的玩家精靈是否接觸到一個靜止的物體。我已經通過了邊界框教程,他們使用的語法不適合我,因爲我的sprite變量設置不同。XNA中的碰撞檢查,如果聲明不起作用

這是我使用的if語句。

if (spritePosition.Equals(Booksposition)) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

所有我需要的是檢查,如果兩者發生碰撞在C#的語法。

這是我的紋理是如何建立...

Texture2D myTexture; 
Vector2 spritePosition = new Vector2(600,300); 
Vector2 spriteSpeed = new Vector2(50.0f, 50.0f); 
Texture2D Books; 
Vector2 Booksposition = new Vector2(100, 300); 
Vector2 BooksSpeed = new Vector2(50.0f, 50.0f); 

當我運行這段代碼它什麼都不做,雖然它編譯和運行。

回答

0

取而代之的是

if(spritePosition.Equals(Booksposition)) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

你應該嘗試這樣的事情

if(spritePosition.x >= Booksposition.x || spritePosition.y >= Booksposition.y) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

>=運營商可能不是您理想的選擇,但我認爲你的想法。

+0

這工作,但只有一點。所以我必須在精靈和對象周圍做一個矩形。然後用相應的矩形替換精靈和書籍位置。只需將矩形放置在精靈頂部,並以相同的速度移動它們。 –

+0

很高興聽到這個消息 –

0

我看到這是一個遲到的反應,但爲了向其他人提供信息,邊界框怎麼樣?

很容易在2D做,只需使用:

的BoundingBox myCollider =新的BoundingBox((新的Vector3(spritePosition.X,spritePosition.Y,0),(新的Vector3(spriteWidth,spriteHeight,0)) ;

畫出其中之一週圍的每個對象,然後用測試:

如果(collider1.intersects(collider2)){ 從 有 去}

均可以使用矩形而不是邊界框,但是當我瞭解碰撞時,每個人都告訴我使用3D工具,並通過將z軸值設置爲零來將它們壓扁至2D。

我希望這可以幫助(某人), 安德魯。