Это моя проблема:HitTest для SKSpriteNode
Я работаю с SpriteKit, и я хочу, чтобы игнорировать сенсорное событие, когда это происходит в некотором прямоугольнике (предотвращения вызова touchesBegan
). То, как я хотел бы это сделать, это нечто вроде «переопределения hitTestWithEvent
UIView
». Но я не могу найти какой-либо подобный метод для SKSpriteNode
, который мог бы игнорировать событие и предотвращать вызов touchesBegan
.
Конечно
- я мог установить
isUserInteractionEnabled
к ложным, но он отключает весь спрайт не только часть. - Я мог проверить местоположение касания в методе
touchesBegan
, но это уже поздно - другие спрайты внизу в том же положении больше не получат это событие. - Я также пытался использовать
SKCropNode
, но это просто предотвращает отображение спрайта, а события обрабатываются даже на невидимой области.
У кого-нибудь есть идея, как предотвратить часть спрайта от обработки события?
Благодарим вас за ответ, но я думаю, что это очень непослушный подход к решению, который я ищу. Этот подход требует, чтобы вручную проверять каждую spripte в сцене: (Представьте себе сцену с десятками или hundrets sprites - насколько беспорядочным будет этот переключатель). Я ищу решение, в котором вы можете включить взаимодействие пользователя с конкретным спрайтом и переопределить его метод теста на удар Этот подход позволяет подклассифицировать SKSpriteNode и адекватно обрабатывать тип подкласса внутри определения подкласса. – ukaszm
Ну, что вы предлагаете, это невозможно, потому что вы можете касаться узла, который не знает непосредственно узла, которого вы хотите коснуться, потому что вы внутри этого подкласса, или он знает свой родительский узел, но родитель не знает нужного узла .. другими словами, если вы стреляете в кучу, вы должны знать всю кучу: ваше прикосновение в этом случае похоже на пулю. –