我想检查用户点击是否在我定义的一组retangles中,但是我应该使用另一种方法来执行此检查吗?如何检查wp7 XNA触摸事件是否在定义的矩形内
这是我现在有,但我不确定如何比较矩形对象与触摸对象
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;
}
那么做一个for循环并检查所有点?这将是我检查每个精灵10000(100x100像素)的操作,这不是一个问题,如果我有10-20个精灵在屏幕上,并做到每秒30次? – Mech0z 2012-02-10 12:54:26
您需要某种场景管理。 Quadtree出现在我的脑海中,对于动画对象来说这很困难。但是你也只需要检查所有可见的物体,屏幕上没有的东西不能被触摸。现在,您只需遍历所有用户触摸,对Quadtree单元格中的可见对象进行测试,并将测试降至最低。当然,如果你确定这个特定的触摸是在精灵矩形内,你只测试每个像素。 – dowhilefor 2012-02-10 13:06:32