Я создаю матрицу 2x2 и помещаю в нее узлы. Когда я выбираю узел внутри позиции матрицы, он меняет свой цвет на красный, используя действие colorize.touchsBegan with physhicsBody
Проблема в том, что если изображение узла слишком велико, он распознает прикосновение, даже если я коснусь другого квадрата матрицы.
Например:
[0-0][0-1]
[1-0][y]
Мой узел находится в квадрате Y (позиция: 1-1). Если изображение больше размера квадрата, он получит прикосновение, даже если я нажму на квадрат 1-0.
Я не могу получить прикосновение, используя положение матрицы узла, потому что изображение перекрывает его, чтобы оно никогда не касалось квадрата матрицы.
Есть в любом случае я мог бы получить контакт с помощью PhyshicsBody узла вместо
let location = touch.locationInNode(self)
let node = nodeAtPoint(location)
Это помогает в пути, но им на самом деле делает матрицу 5x9. Так что это будет большая работа, чтобы сделать 45 других ifs. Я не понимаю, почему nodeAtLocation получает мой Sprite поверх моего PhyshicsBody. Не существует способа изменить это поведение? – Gusfat
Хорошо, я понимаю, но вы можете сделать другим способом, вы можете создать 2 узла, узел для добавления изображения и узел для проверки касания. или вы можете сделать некоторую функцию для получения id в Array of Elements, например API 'func getTouchId (ids: [Int], sizeOfScene: CGRect, touchPosition: CGPoint) -> Int' .. Я думаю, помог вам – ViTUu
Спасибо! Я думаю, что это должно помочь. Но прежде чем я попробую другой aproach – Gusfat