2014-03-28 57 views
1

我有在獲得精靈的左上角座標的麻煩。我試圖用texture2d.bounds既bounds.location.x \ y或bounds.left \頂部...但由於某些原因,這些參數爲:x = 0,Y = 0和對象的移動不會改變它(甚至如果起點不是0,0)。 我該如何解決這個問題?XNA得到一個精靈的左上角座標

+0

一個已經繪製的精靈?不會發生。爲什麼你的精靈不是用帶有位置的對象表示的(然後在該位置繪製精靈),所以你已經知道它在哪裏了? – BradleyDotNET

回答

3

Texture2D.Bounds獲取資源的大小,對MSDN document所見。該XY位置將始終爲0,你永遠需要他們,爲Bounds的唯一原因是讓Width和紋理的Height

就是這樣說的,Texture2D只是代表一個紋理,他們做不是代表一個位置。你需要做的是使用一個二維向量Vector2來定位你的精靈。

例子:

Texture2D sprite; 
Vector2 position; 
... 
protected override void Draw(GameTime gameTime) 
{ 
    spriteBatch.Begin(); 
    spriteBatch.Draw(sprite, position, Color.White) 
    spriteBatch.End(); 
} 

創建每個精靈的位置和紋理的相反,你可以做一個單獨的精靈類來處理你的位置,質地,和繪圖。

public class Sprite 
{ 
    public Texture2D Texture { get; set; } 
    public Vector2 Position { get; set; } 

    public Sprite(Texture2D texture, Vector2 initialPosition) 
    { 
     Texture = texture; 
     Position = initialPosition; 
    } 
    public virtual void Draw(SpriteBatch spriteBatch, GameTime gameTime) 
    { 
     spriteBatch.Draw(Texture, Position, Color.White); 
    } 
}