私の現在のプロジェクトでは、単にその場で回転するスプライトを含めようとしています。これは簡単なはずですが、何らかの理由で XNA がスプライトの位置にオフセットを追加しています。
私が使用している描画方法は次のとおりです。
spriteBatch.Draw(
texture, //texture2D
position, //position Vector2
null, //source Rect (null draws whole texture)
Color.White, //Color
rotation, //rotation (float)
new Vector2(position.X + (texture.Width / 2), position.Y +(texture.Height / 2)), //origin
1f, //scale (float)
SpriteEffects.None, //spriteEffects
1); //layer depth
ここでの位置は任意です。現在、ビューポートの中央下部に設定されています。回転はインクリメンタル フロート (0.1f のインクリメント) であり、コードをステップ実行すると、原点と位置の両方が正しい値を保持します。
しかし、私が何をしようとしても、スプライトは常に原点から少し離れて描画されます。原点を中心に回転しますが、中心軸ではなく、スプライトが画面を横切ってアーチを描いています。
私は、XNA 4.0 のビルトイン draw メソッドのすべてのバリアントを試しました。回転に言及しているものはすべて、この効果があります。(基本的な(テクスチャ、位置、色)メソッドで問題ありません。位置ごとに。テクスチャを別のものに変更しようとしました。正直なところ、考えられることはすべて試しました。
どんな助けにもとても感謝しています。より完全な例が必要な場合は、それを共有しますが、正直なところ、このメソッドの外で実際に何かが起こっているわけではありません。
読んでくれてありがとう!