Обнаружение касания определенной области узла в SpriteKit

Как я могу обнаружить касание определенной области узла?

Просто пример:

https://i.stack.imgur.com/8jvFb.png

Как я могу выполнить действие только при касании нижней левой части красного узла (желтый прямоугольник)?

Это то, что я должен выполнить действие, когда затрагивается любая часть узла:

if atPoint(location).name == "bubble"{
                node.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 70))
            }
+1
источник поделиться
2 ответа

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

let yellowBox = CGRect(x: 0, y: 0, width: 40, height: 40)

Вы можете обновить значения x, y, width и height в соответствии с вашими потребностями.

Затем вы можете найти местоположение касания внутри любого узла для касания, как показано ниже,

let touchPoint = touch.location(in: bubbleNode)

Теперь вы можете просто проверить, находится ли touchPoint внутри yellowBox или нет, как yellowBox ниже,

if yellowBox.contains(touch) {
   print("Yellow box is touched!")
}

Вы можете проверить здесь более подробную информацию о том, как получить touchLocation в узле.

0
источник

Я думаю, что самый простой подход может заключаться в обнаружении касания всего узла. Как только вы получите местоположение касания, проверьте, находится ли это место в пределах области, которую вы хотите. Например, если область привязана x от 0 до 30, проверьте, находится ли x точки касания между 0 и 30. Сделайте аналогичную проверку для y. Если оба x и y находятся в пределах границ, то прикосновение происходит в нужной области, а затем вы можете выполнить необходимое действие.

Надеюсь это поможет!

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос