ユーザーのクリックが私が定義した再編成の範囲内にあるかどうかをチェックしたいが、このチェックを行うには別の方法で行うべきだろうか?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
何らかのシーン管理が必要です。 Quadtreeが私の頭に浮かびます。アニメーションオブジェクトでは難しいかもしれません。しかし、あなたはまた、表示されているすべてのオブジェクトをチェックする必要があります。スクリーン上にないオブジェクトには触れません。今度は、すべてのユーザータッチを反復し、Quadtreeセルの可視オブジェクトに対してテストを行い、テストを最小限に抑えました。もちろん、この特定のタッチがスプライトの四角形内にあることを確認した場合は、ピクセル単位でのみテストします。 – dowhilefor