1
我有在獲得精靈的左上角座標的麻煩。我試圖用texture2d.bounds既bounds.location.x \ y或bounds.left \頂部...但由於某些原因,這些參數爲:x = 0,Y = 0和對象的移動不會改變它(甚至如果起點不是0,0)。 我該如何解決這個問題?XNA得到一個精靈的左上角座標
我有在獲得精靈的左上角座標的麻煩。我試圖用texture2d.bounds既bounds.location.x \ y或bounds.left \頂部...但由於某些原因,這些參數爲:x = 0,Y = 0和對象的移動不會改變它(甚至如果起點不是0,0)。 我該如何解決這個問題?XNA得到一個精靈的左上角座標
Texture2D.Bounds
獲取資源的大小,對MSDN document所見。該X
和Y
位置將始終爲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);
}
}
一個已經繪製的精靈?不會發生。爲什麼你的精靈不是用帶有位置的對象表示的(然後在該位置繪製精靈),所以你已經知道它在哪裏了? – BradleyDotNET