2011-05-27 91 views
1

我想允許用鼠標滾動縮放並將縮放值傳遞給我的每個可繪製對象。每個可繪製對象都採用縮放值並使用SpriteBatch.Draw方法的縮放參數。儘管縮放每個單獨的項目並不適用於所有其他對象。是否有某種我可以繪製所有內容的畫布,然後將其縮小以便一切都適當放大?XNA - 全球縮放

回答

3

使用採用Matrix參數的SpriteBatch.Begin方法。通過一個scaling矩陣:

Matrix scaleMatrix = Matrix.CreateScale(myScale); 
sb.Begin(SpriteSortMode.Deferred, null, null, null, null, null, scaleMatrix); 

你應該使用這個參數來進行你的精靈的所有「全局」轉換。所以你可以結合(乘)一個平移和一個尺度矩陣來移動和放大你的2D場景。

1

在相機中,你必須重新創建視圖,改變視場較小的值:

Matrix.CreatePerspectiveFieldOfView(
    MathHelper.PiOver4,     // change this to, say 20° 
    aspectRatio, 
    0.0001f, 
    1000.0f, 
    out projection 
); 

現在,因爲你使用相機的投影在你的影響這種變化是全球性的

+0

這個答案並不正確。 – 2011-05-28 03:10:45

+0

@Andrew Russel:爲什麼?它適用於我 – BlackBear 2011-05-28 12:22:10

+0

問題是2D圖形。你的答案是3D。 – 2011-05-28 14:17:42