使用Artemis,Visual Studio,C#和Monogame。
刚刚开始掌握Artemis,但在寻找向实体添加可点击的矩形/区域的适当位置时,屏幕上会有多个实体。
基本简单的想法,我有小方形精灵随机显示和移动2D游戏区域。 我需要能够点击它们并保持简单,删除正方形。
在Artemis中,您有组件,实体,系统。
我知道我将这个矩形区域添加到Texture2D方块,猜测它应该是它自己的组件。
试图找出
更新
在我的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;
}
答案 0 :(得分:1)
我会创建一个BoundingBox
组件。它将公开Bounds
类型的Rectangle
属性。
使用此组件,您可以创建KillEntityOnClickSystem
来处理已点击实体的删除。当单击鼠标按钮时,您只需要检查鼠标是否在实体Bounds
的{{1}}内。
希望这有帮助!