Как вы можете определить, коснулся ли SKShapeNode?

Я создал sknodeshape. Как я могу определить, коснулись ли фигуры, которую я сделал (нажали)?

Вот код: (я уже решил)

//metung_babi is the name of the SKShapeNode

UITouch *touch = [touches anyObject];
CGPoint nokarin = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:nokarin];

if ([node.name isEqualToString:@"metung_babi"]) {
    NSlog(@"touch me not");
}

моя ошибка заключалась в том, что когда я создавал фигуру, я поместил имя SKShapeNode перед ее инициализацией.


person East Bay Ray    schedule 05.03.2014    source источник
comment
фактическая форма (путь) или его рамка?   -  person LearnCocos2D    schedule 05.03.2014


Ответы (2)


Реализуйте методы сенсорного делегата. Затем в методе -touchesBegan: извлеките точку касания и извлеките узел с помощью метода [self nodeAtPoint:]

person ZeMoon    schedule 05.03.2014

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];

    SKNode *yourNode = ....;
    CGRect yourNodeFrame = bowlNode.frame;

    if (CGRectContainsPoint(yourNodeFrame, location)) {

        //your node may be touched, check if it's your node
        SKNode *theNode = [self nodeAtPoint:location];

        if ([theNode.name isEqualTo:yourNode.name]) {
            //it's your node touched
        }
    }
}

метод nodeAtPoint возвращает сложное значение. вы можете проверить документ, чтобы найти различные ситуации

person Jing    schedule 05.03.2014
comment
ваше решение определенно неверно. В любом случае, просто используйте мой код, это намного проще. - person East Bay Ray; 05.03.2014