Использование frame.contains() с повернутым спрайтом
Вращение спрайта не вращает его рамку, а увеличивает его, чтобы вместить новые измерения спрайта, описанные здесь. Дополнительная область вокруг спрайта создает пустое пространство.
При определении, содержит ли повернутый спрайт другой спрайт или его точку, contains()
функция учитывает пустое accumulatedFrame
пространство, окружающее вращающийся спрайт.
Как вы можете изменить кадр, чтобы он соответствовал спрайту, чтобы этого не произошло?
1 ответ
Одним из вариантов является позиционирование SKNodes
в каждом углу квадрата перед его вращением, а затем получите их точки, используя функцию конвертирования впоследствии. Оттуда вы можете нарисовать UIBezierPath
между ними, и проверьте для точных пересечений, используя contains()
,
Единственная проблема в этом состоит в том, что безье будет перемещаться с узлом, когда ему назначен, но фактический путь фиксирован и не будет двигаться.