2009-12-16 173 views
0

我在XNA中有一個精靈對象。
它有一個大小,位置和旋轉。
如何將點從屏幕座標轉換爲精靈座標?
謝謝,
SW在XNA中將屏幕座標轉換爲精靈座標

+0

不知道你在問什麼。精靈的位置在屏幕座標中,不是嗎? – 2009-12-16 21:52:15

+0

我想將點擊屏幕上的鼠標點擊到精靈圖像的X/Y(如果點擊在精靈內)。 – 2009-12-16 22:15:42

回答

0

一種解決方案是擊中測試精靈的原始,未旋轉的邊框。 所以給定的2D屏幕矢量(X,Y):

  1. 翻譯2D矢量入本地精靈空間:(X,Y) - (spritex,spritey)
  2. 應用逆子畫面旋轉
  3. 執行打對邊框的測試

當然,通過考慮精靈形狀,命中測試可以更準確。

0

我認爲這可能就像在Rectangle上使用Contains方法一樣簡單,矩形就是你的精靈的邊界框。我已經在XNA中以這種方式實現了拖放功能;我相信Contains測試基於x和y是屏幕座標。

+0

但是邊框是否考慮到了精靈旋轉? – 2009-12-18 07:38:04

3

你需要計算變換矩陣爲你的精靈,反轉是(所以變換現在從世界空間老話 - >本地空間)並通過倒置矩陣變換鼠標位置。

Matrix transform = Matrix.CreateScale(scale) * Matrix.CreateRotationZ(rotation) * Matrix.CreateTranslation(translation); 

Matrix inverseTransform = Matrix.Invert(transform); 
Vector3 transformedMousePosition = Vector3.Transform(mousePosition, inverseTransform); 
相關問題