2011-09-08 149 views
0

我想根據移動/速度方向伸展精靈。爲了簡單起見,精靈是白色的5x5像素。包括一個黑色的1x1邊框XNA伸縮精靈

因此,例如,如果精靈從當前位置移動到'3oclock',它將像細線一樣沿對角線伸展/縮放,類似於基於隨機移動的任何其他角度/弧度。

我嘗試過:vector2位置 - 原始位置,然後將其與:length()用於x和y比例值,但這會產生大尺度塊而不是線?

任何想法?在縮放和計算方向角度

保羅。

+0

在縮放圖像中包含邊框是一個壞主意,因爲邊框會變形,看起來很奇怪。如果對象幾何規則,首先繪製縮放對象,然後用相應的比例繪製邊框。 – Elideb

回答

0

我想你必須創建多個精靈來顯示這一行。你將需要過渡精靈的線內部分和精靈的終點。

+0

會與原始的東西可能工作? – Paul

+0

是的,我可以看到一組創造你想要的效果的原始人。 –

0

請說清楚你的問題。你能上傳任何截圖嗎?但是,據我所知,您應該使用距離公式在X方向上縮放精靈,然後使用tan逆函數對其旋轉。

2

這是前一段時間,所以對提出請求的原始人可能沒有多大用處。但是你有三個選擇。一種是使用Draw(Texture2D,Rectangle,...)而不是Draw(Texture2D,Vector2 ...)。 Vector2只是設置x和y座標,所以如果您使用該方法調整大小,您將調整整個sprite的大小。矩形包含X,Y &單獨的高度和寬度值,因此使用矩形可以沿一個軸調整大小。你仍然會遇到問題,但可以通過將兩端視爲單獨的子畫面來解決問題。我將這種方法用於可變大小的邊框。

第二個在你描述的簡單精靈的情況下工作,就是在運行時創建紋理。創建一個所需大小的新Texture2D,然後創建一個足夠大的顏色數組來覆蓋每個像素,並使用.SetData(Color [])分配該數組。這樣做有一定的計算開銷,但是我用它在運行時突出顯示了一個可變大小的邊界框,所以它工作正常。

當然,原始選項也很好看。 :)