небольшое прикосновение спрайта - PullRequest
2 голосов
/ 18 мая 2010

В некоторых играх есть небольшие картинки в виде спрайтов, которые можно перемещать на ощупь. Если спрайт - изображение большего размера, касание вполне нормальное. И мы можем использовать функцию CGRectContainsPoint, проверяющую спрайт. Спрайт довольно маленький, эта функция выглядит не очень хорошо. Есть ли другой способ решить проблему?

Ответы [ 2 ]

1 голос
/ 18 мая 2010

Я написал о подходе, который вы можете использовать для смягчения проблемы «толстого пальца», описанной @FrustratedWithFormsDesigner:
http://codecube.net/2010/03/approximating-touch-points/

... что если вы сравните точка соприкосновения с сущностью позиции и просто выберите ближайший (независимо от того, это 35 или 36 пикселей)?

Пост написан на C # для Windows Phone, но концепция должна применяться. В основном, сделайте сравнение расстояния между прикосновением пользователя и объектами на экране. Сделайте прикосновение, манипулируя ближайшим по расстоянию, и вы избежите проблем с жестко определенными квадратами, с помощью которых можно обнаружить прикосновения.

0 голосов
/ 18 мая 2010

Вы можете разрешить касания в поле вокруг спрайта.Например, если касание находится в пределах 10 пикселей от спрайта, обрабатывайте его так, как если бы оно касалось спрайта.

Один из способов сделать это - расширить прямоугольник спрайта перед вызовом CGRectContainsPoint.Следующий код расширит прямоугольник на 10 для x и y:

CGRect expanded = CGRectInset(spriteRect, -10.0, -10.0);

Еще один способ сделать это - создать прямоугольник вокруг касания и использовать CGRectIntersectsRect, чтобы проверить, перекрывается ли прямоугольник касания сспрайт.

...