программирование игр для iphone: мозаика чёрных линий - PullRequest
0 голосов
/ 28 августа 2011

когда я запускаю свое приложение на своем iphone (не на симуляторе), странные черные линии появляются только тогда, когда я начинаю перемещать карту. Итак, вот мой код для перемещения карты тайла:

- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {

    if (recognizer.state == UIGestureRecognizerStateBegan) {    

        CGPoint touchLocation = [recognizer locationInView:recognizer.view];
        touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];
        touchLocation = [self convertToNodeSpace:touchLocation];                

    } else if (recognizer.state == UIGestureRecognizerStateChanged) {    

        CGPoint translation = [recognizer translationInView:recognizer.view];
        translation = ccp(translation.x, -translation.y);
        CGPoint newPos = ccpAdd(self.position, translation);
        self.position = [self boundLayerPos:newPos];  
        [recognizer setTranslation:CGPointZero inView:recognizer.view];    

    } else if (recognizer.state == UIGestureRecognizerStateEnded) {

        float scrollDuration = 0.2;
        CGPoint velocity = [recognizer velocityInView:recognizer.view];
        CGPoint newPos = ccpAdd(self.position, ccpMult(ccp(velocity.x, velocity.y * -1), scrollDuration));
        newPos = [self boundLayerPos:newPos];

        [self stopAllActions];
        CCMoveTo *moveTo = [CCMoveTo actionWithDuration:scrollDuration position:newPos];            
        [self runAction:[CCEaseOut actionWithAction:moveTo rate:1]];            

    }     
}

1 Ответ

2 голосов
/ 28 августа 2011

Накопление дельт приведет к появлению артефактов из-за проблем с округлением с плавающей точкой.Вы получите лучшие результаты, разместив плитки в определенном месте в пространстве, и переместив все с помощью аффинного преобразования.Промежуточное решение состоит в том, чтобы накапливать одно абсолютное смещение и добавлять его к начальной позиции каждой плитки (вам, очевидно, придется где-то кэшировать каждую начальную позицию).

...