0

私はこの問題を解決しようとしてきましたが、わかりません。起源について尋ねる前に知っていましたが、これを修正する方法が本当にわかりません。

ここに画像の説明を入力

赤い点 = 座標 xy

黄色の点 = spritebatch.draw で使用される原点

origin = new vector(img.width/2, img.height/2);

位置 = 新しい長方形 (400, 200, img.width, img.height);

center_x = position.center.x center_Y= position.center.y

spritebatch.draw を使用して原点を配置したにもかかわらず、配置は黄色い点ではなく 0,0 原点から行われていることに気付きました。どうすればこれを変更できますか? 位置矩形のY中心とX中心を確認し、実際の座標と比べてみたところ気付きました。中心は自分自身の座標よりも高かった。中心座標が位置の X と Y から同じになるようにします。たとえば、位置の四角形で X に 200、Y に 200 を割り当てます。その長方形の中心を確認するときは、X と Y の両方で 200 にしたいのです。また、位置決めに長方形を使用しているため、衝突もテストしています。

例はいいでしょう、事前に感謝します

4

3 に答える 3

1

長方形の配置に渡しています。代わりに Vector2 を使用して配置します。

  Vector2 origin = new Vector2(img.Width, img.Height) * 0.5f;
  Vector2 pos = new Vector2(400,200) + origin;
  spriteBatch.Draw(img, pos, null, Color.White, 0, origin, SpriteEffects.None, 0)

これは確実に機能します。

編集: 長方形を使用する場合は、原点がテクスチャ サイズに関連していることを確認してください。

  Rectangle bounds = new (400,200, img.Width, img.Height);
  Vector2 origin = new Vector2(img.Width, img.Height) * 0.5f;
  spriteBatch.Draw(img, bounds, null, Color.White, 0, origin, SpriteEffects.None, 0)

  This works too. 

  The position of the yellow dot will be (400,200)
  if you don't use origin, the red dot position will be (400,200)
于 2013-08-28T11:22:20.253 に答える
1

スプライトを中央に設定して描画しようとしているOrigin場合は、正しく行っています。黄色の点は (400, 200) の位置にあり、スクリーンのサイズが 800x480 であることを考えると、スクリーンショットの点はその位置にあります。ただし、スプライトの左上隅をその位置にしたい場合は、Draw呼び出しを変更する必要があります。

を指定するときは、スプライトの位置を設定するために、 の 2 番目のパラメータの代わりに position をOrigin使用してみてください。Vector2RectangleDraw

Vector2位置と原点を指定:

origin = newVector2(img.Width, img.Heigth) / 2;
pos = new Vector2(400, 200) + origin;
spriteBatch.Draw(img, pos, null, Color.White, 0, origin, SpriteEffects.None, 0);

または、位置のみを使用しますRectangle:

posRect = new Rectangle(400, 200, img.Width, img.Heigth);
spriteBatch.Draw(img, posRect, Color.White);
于 2013-08-28T10:16:10.247 に答える
1

spriteBatch の例では位置がわかりません。すべてのプロパティで使用してみてください。

SpriteBatch.Draw (Texture2D, ImgPosition, ImgRect, ImgColor, ImgRotate, ImgOrigin, Scale, SpriteEffects, Layer)

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.draw.aspx

于 2013-08-28T06:15:17.353 に答える