0

原点を画面の中央に設定する方法はないかと考えていました。

たとえば、私は通常これを行います:

`origin = new vector2D(image.height / 2, image.width /2);

spritebatch.Draw(image, vector.zero,null, Color, 0, origin, none, 0); `

そして今、イメージの原点は真ん中にあります。vector.zero を実行して、通常行うことをせずに画像を画面の中央に配置できるようにしたいと考えています。それは可能ですか?

4

1 に答える 1

1

画面空間について話しているのでない限り、これは実際には座標系の仕組みではありません。この場合、画面全体が [-1,-1](左上) - [1,1](右下) にマップされます。これは本当に役に立たないので、そうしないでください。

あなたがする必要があるのは、描画しようとしているスプライト(テクスチャ)の起源の発見を実行するスプライトクラスを自分自身にすることです:

public class Sprite
{
    static Vector2 WorldOrigo = new Vector2(400, 240); //center of a 800x480 screen

    Texture2D Texture { get; set; }
    Vector2 Origin { get; set; }

    public Sprite(Texture2D texture)
    {
        Texture = texture;
        Origin = new Vector2(texture.Width / 2, texture.Height / 2);
    }

    public void Draw(Vector2 position, SpriteBatch spriteBatch)
    {
        spriteBatch.Draw(Texture, WorldOrigo + position - Origin, Color.White);
    }
}

これは単なる例であることに注意してください。スプライトには、おそらくアニメーションなどのコードが含まれているでしょう。

于 2013-05-07T07:24:11.093 に答える