SpriteKit: определить, находится ли точка внутри повернутого узла

Я пытаюсь определить, находится ли точка внутри повернутого узла. Я пробовал следующий код в своей сцене:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */
    UITouch *touch = [touches anyObject];
    if ([self.cardNode containsPoint:[touch locationInNode:self.cardNode.parent]]) {
        NSLog(@"HIT");
    }
}

Но кажется, что рамка узлов остается такой же, как и тогда, когда она не вращается. Другими словами, точки вне повернутого узла (которые находятся в узле, когда он не вращается) считаются находящимися внутри него. Я также пытался использовать CGRectContainsPoint, который дал те же результаты.

Как я могу определить, находится ли точка в повернутом узле?


person Manool    schedule 02.10.2015    source источник


Ответы (1)


В случае, если у вас есть две текстуры, вы можете использовать свойство .contactTestBitMask для двух физических тел, поэтому, если они перекрываются, вы получите уведомление, и вы можете делать все, что хотите, вот и все! (обратите внимание, что вам не нужно делать какое-либо столкновение просто уведомлением) Здесь вы должны прочитать о свойстве physicsBody и методе didBeginContact.

Поскольку физические тела созданы текстурой, поэтому, если они вращаются, это означает, что это вращающаяся текстура, поэтому вы получите то, что хотите.

Но в случае, если вы хотите проверить, находится ли ваше касание в каком-либо узле, вы можете использовать свойство

yourTouch.locationInNode(SOME_NODE)

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

person wm.p1us    schedule 06.10.2015
comment
Привет, извини, я не совсем понимаю. Не могли бы вы привести мне пример? Вот картина происходящего: imgur.com/Ixzw0bk Белая рамка — это повернутый узел SKSpriteNode. Красная точка — это то место, где я касаюсь, что приводит к тому, что код в моем исходном сообщении печатает HIT. Спасибо - person Manool; 16.10.2015