0

Artemis、Visual Studio、C#、Monogame を使用。

Artemis を理解し始めたばかりですが、クリック可能な四角形/領域をエンティティに追加する適切な場所を探していると、画面に複数のエンティティが表示されます。

基本的な単純なアイデア、2D プレイエリアでランダムに表示および移動する小さな正方形のスプライトがあります。それらをクリックしてシンプルに保ち、正方形を削除できるようにする必要があります。

Artemis には、コンポーネント、エンティティ、システムがあります。

この長方形の領域を Texture2D 正方形に追加することはわかっていますが、それは独自のコンポーネントである必要があると推測しています。

理解しようとしている

  1. 正方形のサイズの長方形を取得し、移動するときに正方形にとどまります。
  2. 一部のシステムで、この四角がクリックまたはタッチされたことを検出する方法。

アップデート

私の DrawableGameComponent エンティティで。DrawPosition は vector2 であり、メイン ゲーム ルーチンで設定されます。私の広場の場所です。それとテクスチャ サイズを使用して、長方形のサイズと位置を計算します。

AreItemsIntersecting 関数は、画面がクリックされたときにマウスの位置を取得し、それを使用して小さな四角形を作成し、2 が交差するかどうかを確認しました。クリックされた場合、オブジェクトはクリックされています。

public override void Update(GameTime gameTime)
{

    var bx = DrawPosition.X;
    var by = DrawPosition.Y;
    var w = _texture.Bounds.Width;
    var h = _texture.Bounds.Height;

    _bounds = new Rectangle((int)bx, (int)by, w+1, h+1);

    base.Update(gameTime);
}

public override void Draw(GameTime gameTime)
{
    if (_texture != null)
    {
        _spriteBatch.Begin();

        _spriteBatch.Draw(_texture, DrawPosition, Color.White);
        _spriteBatch.Draw(_texture, _bounds, Color.Transparent); 

        _spriteBatch.End();

    base.Draw(gameTime);
}

    public bool AreItemsIntersecting(int x, int y)
    {
        var vect = new Rectangle(x, y, 1, 1);

        if (vect.Intersects(_bounds))
        {
            return true;
        }
        return false;
    }
4

1 に答える 1