我正在構建一個遊戲,我想找到窗口的左上角點。如何獲取屏幕原點(左上角)?
這不(0,0),因爲該字符是移動和攝像機跟隨他。 我必須找到另一種方式,然後,通過計算基於角色的點。
也許東西的已經建成到XNA?
我加了一些照片:
1)http://i.stack.imgur.com/ytpV9.png
2)http://i.stack.imgur.com/rx71u.png
我需要另一種方式來做到這一點。 請告訴我,如果你有一個想法或可能。
編輯: 相機的代碼:
public class Camera
{
public Matrix Mat { get; private set; }
V2 pos;
IFocus focus { get; set; }
F zoom;
Viewport vp;
//ctor
public Camera(IFocus focus , Viewport vp , F zoom)
{
this.focus = focus;
this.zoom = zoom;
this.vp = vp;
this.pos = V2.Zero;
}
public void update()
{
Mat = Matrix.CreateTranslation(-pos.X, -pos.Y, 0) *
Matrix.CreateRotationZ(0) * //-focus.Rot
Matrix.CreateScale(zoom , zoom , 1) *
Matrix.CreateTranslation(vp.Width/2 , vp.Height/2 , 0);
this.pos = V2.Lerp(this.pos, focus.Pos, 0.97f);
}
繪製代碼:
class Drawing : IFocus
{
#region Data
protected T2 tex;
protected V2 org;
protected Rec? rec;
public V2 Pos { get; set;}
C color;
public F Rot { get; set;}
protected V2 scale;
protected SE se;
F layer;
#endregion
//Rec? - can be NULL
#region ctor
public Drawing(T2 tex, V2 pos, Rec? rec, C color, F rot, V2 org, V2 scale, SE se, F layer)
{
this.tex = tex;
this.Pos = pos;
this.rec = rec;
this.color = color;
this.Rot = rot;
this.org = org;
this.scale = scale;
this.se = se;
this.layer = layer;
Game1.CallDraw+=new SigDraw(Draw);
}
#endregion
#region Drawing
public virtual void Draw()
{
Game1.spriteBatch.Draw(tex, Pos, rec, color, Rot, org, scale, se, layer);
}
假設你使用某種偏移矢量來渲染背景,或者你正在做一些機智的視口?否則它**將**爲0,0。屏幕截圖不幫助我們在這裏,我們需要看到一些代碼。 「 – Joe
」它不是(0,0),因爲角色正在移動。「這一點對我來說毫無意義。它應該仍然是0,0。 – Dan
嘗試將您的比例更改爲0? zoom = 0?在你的更新中你也在做,翻譯*旋轉*縮放*翻譯...乘法的順序很重要。 –