如何检查wp7XNA触摸事件是否在定义的矩形内
本文关键字:定义 是否 事件 触摸 何检查 检查 wp7XNA | 更新日期: 2023-09-27 18:24:05
我想检查用户点击是否在我定义的一组重新标记中,但我应该用另一种方式来进行检查吗?
这就是我现在所拥有的,但我怀疑如何将矩形对象与触摸对象进行比较
private bool CheckEnemyClicked(Vector2 vector2, out Enemy enemyOut)
{
TouchCollection touches = TouchPanel.GetState();
foreach (Enemy enemy in enemies)
{
//Find the rectangle of the sprite
Rectangle rectangle = new Rectangle(
(int)enemy.Position.X,
(int)enemy.Position.Y,
enemy.Width,
enemy.Height);
//Check if click is hitting enemy
if(touchinput is within rectangle)
{
enemyOut = enemy;
return true;
}
}
enemyOut = null;
return false;
}
TouchCollection返回一个具有"Position"成员的TouchLocation对象集合。Rectangle有一个Contains方法,它有一个重载,可以检查其中是否包含特定的点。所以XNA框架为您做了所有的艰苦工作。
对于Touch的碰撞检查部分,您的代码看起来像这样。
//Check if click is hitting enemy
foreach (TouchLocation location in collection)
{
if (rectangle.Contains((int)location.Position.X, (int)location.Position.Y))
{
enemyOut = enemy;
return true;
}
}
TouchCollection
是触摸点的集合(因为用户可能在多个地方触摸屏幕)。你应该检查TouchCollection
内的各个触摸点,并找到这些触摸点相对于你的敌人矩形的位置。