我想檢查用戶點擊是否在我定義的一組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