«Люди вокруг» на SpriteKit: кольца-расстояния, инерция пальцем и виртуализация аватаров
vientooscuro 8 минут назад «Люди вокруг» на SpriteKit: кольца-расстояния, инерция пальцем и виртуализация аватаров 6 мин 378 iOS * Swift * Туториал Эта статья – продолжение моей серии статей о разработке геолокационной...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: vientooscuro 8 минут назад «Люди вокруг» на SpriteKit: кольца-расстояния, инерция пальцем и виртуализация аватаров 6 мин 378 iOS * Swift * Туториал Эта статья – продолжение моей серии статей о разработке геолокационной соц. сети, над которой я работал уже почти 10 лет назад, но многое из той работы актуально и сейчас, и мне хотелось бы поделиться с вами ещё одним блоком. В геолокационной соцсети есть очевидный экран – «люди вокруг тебя».
И есть очевидный способ его сделать: обычный список, отсортированный по расстоянию. 2 км», следующий пользователь, ещё один, и так далее вниз. Технически это самый простой вариант.
Технические детали
Но по задумке авторов проекта это должен был быть не список, а нечто более интересное: пользователь находится в центре экрана, а вокруг него кольцами расходятся люди – как планеты на орбитах. Чем дальше кольцо – тем дальше человек. Что-то ближе к радару, чем к таблице.
Экран можно крутить, тапать по аватаркам, а расстояние считывается не как число, а как положение человека относительно тебя. Список в таком сценарии слишком сильно упрощает идею. Он показывает порядок, но не показывает ощущение «вокруг».
А здесь как раз было важно, чтобы пользователь видел не просто набор профилей, а пространство рядом с собой. Для таких целей стандартных компонентов у нас нет, поэтому надо было что-то придумать новое. Конечно, можно повесить круглые UIView, но в тот момент я активно изучал разные возможности iOS, так что решил попробовать использовать SpriteKit.
Отраслевые последствия
ПодходВ основе экрана – концентрические кольца вокруг пользователя. Каждое кольцо отвечает за свой уровень дистанции: ближе к центру – люди рядом, дальше от центра – люди на большем расстоянии. Каждый человек – это узел UserNode: SKShapeNode.
Он знает свой угол на дуге, радиус кольца, пользователя и аватар:class var userGroups = ]() // узлы, сгруппированные по кольцам var radii: ! // радиусы колец Цвет кружка под аватаром дополнительно кодирует отношение к человеку: друг, подписка, заблокированный пользователь и так далее. Это мелочь, но полезная: часть информации считывается боковым зрением, без необходимости открывать профиль или читать подписи.
Задача: поставить аватары в кольцо без наложенийПервая нетривиальная задача – разложить людей по кольцу так, чтобы аватары не налезали друг на друга. Можно было бы поставить их равномерно по окружности, но такой вариант выглядит слишком искусственно. Все стоят по линейке, экран становится похож на диаграмму, а не на живую карту людей рядом.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





