2013-11-27 1 views
2

Итак, я пытаюсь изучить SpriteKit, строя то, что я думаю, это простая игра-головоломка. У меня есть 5x5 сетка SKSpriteNodes разных цветов. Я хочу, чтобы можно было коснуться одного и перенести мой палец по горизонтали или вертикали и обнаружить все узлы, на которые мой палец касается, например, если я «выбираю» их.ins SpriteKit, «выберите» все спрайты, которые мой палец касается во время перемещения

Я пытался сделать что-то вроде этого, но он выходит из строя приложение:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 

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

    NSLog(@"Dragged over: %@", node); 
} 

Есть ли что-то вроде «TouchEnter»/«TouchLeave» любопытное событие, что я не хватает? Извините, я даже не знаю, чего не знаю.

ответ

3

UIPanGestureRecognizer ваш друг:

-(void)didMoveToView:(SKView*)view { 
    UIPanGestureRecognizer *recognizer = [[UIPangestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)]; 
    recognizer.delegate = self; 
    [self.view addGestureRecognizer:recognizer]; 
} 
-(void)hadlePangesture:(UIPanGestureRecognizer*)recognizer { 
    CGPoint location = [recognizer locationInView:self.view]; 
    SKSpriteNode *node = [self nodeAtPoint:[self convertPointFromView:location]]; 
    if (node) { 
     NSLog(@"Dragged over: %@", node); 
    } 
} 
+1

В случае, если не "SKSpriteNode * узел = [самоуправления nodeAtPoint: [само convertPointFromView: место]];" быть SKNode. – PeterK

+0

Это хорошо работает, когда есть только одно касание, но не тогда, когда на экране появляется второе касание, удерживающее его в другом месте. – avance

 Смежные вопросы

  • Нет связанных вопросов^_^