2013-04-27 173 views
2

我試圖旋轉XNA邊框,這是怎麼了,我通常做:如何在XNA中旋轉邊界框?

new Rectangle((int)position.X, (int)position.Y, (int)texture.Width, (int)texture.Height); 

但它目前返回旋轉是在我的抽獎代碼:

spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, scale, SpriteEffects.None, 1f); 

如何隨玩家旋轉?我試圖找出了這一點,偶然發現了這一點:

2D BoundingRectangle rotation in XNA 4.0

,但我不太清楚如何實現他在談論的矩陣,和我在做一個2D遊戲,而不是在3D一個在這裏。

回答

3

Rectangle結構是一個軸對齊邊界矩形。邊將總是平行於X軸和Y軸。如果你想要一個旋轉的邊界矩形,你必須自己實現它。

計算旋轉矩形碰撞的一種算法是Separating Axis Theorem

正如鏈接答案中所述,矩陣是計算機圖形學中必不可少的。您可以通過旋轉每個頂點使用相同的旋轉矩陣來旋轉一個形狀。這是一般rotation matrix爲兩個維度:

R(theta) = [cos(theta), -sin(theta); sin(theta), cos(theta)

矩陣然後被 「施加」 與矩陣 - 向量乘法載體:

P' = R(theta) * P

其等於