私はC#にはとても新しく、まだそれはすべての小さな癖であることを学んでいます。左クリックとマウスの位置に基づいて位置を移動するカメラを設定しようとしていますが、現在のコードでスタックのオーバーフローが発生しています。問題が見つかるようですが、なぜ私のマトリックスはスタックオーバーフローを返すのですか?
助けていただければ幸いです。 はここで、現在描画されている私のCameraクラス
class Camera
{
Vector2 viewPosition = Vector2.Zero;
public Matrix viewMatrix
{
get { return viewMatrix; }
set { return; }
}
public void Update(InputHandler inputHandler)
{
Vector2 mousePosition = inputHandler.MousePosition;
bool LeftClick = inputHandler.LeftButton;
if (LeftClick == true)
{
viewPosition = mousePosition;
}
viewMatrix = Matrix.CreateTranslation(viewPosition.X,viewPosition.Y, 0);
}
}
およびオブジェクトのみのための私のDrawメソッドです。
public void Draw(SpriteBatch spriteBatch, Texture2D sprite, Camera camera)
{
spriteBatch.Begin(SpriteSortMode.Deferred,BlendState.AlphaBlend,null,null,null,null,camera.viewMatrix);
spriteBatch.Draw(sprite, spritePosition, null, Color.White,angle,origin,1.0f,SpriteEffects.None,0);
spriteBatch.End();
}
btwは 'if(LeftClick == true)'を使わないでください。単純に 'if(LeftClick)'で 'bool'で十分です。デバッガを使用して、コードをステップ実行して何が起きているかを確認することができます。 'StackOverflowException'は、(無意味な)無限再帰によって引き起こされます。無限再帰はスタックに戻りアドレスをあふれさせます。 –
あなたの 'viewMatrix'ゲッターを見てください。 –
setterは何もしないので、 'viewMatrix = Matrix.CreateTranslation'も機能しません。 – poke