Im довольно новичок в объективе-c и наборе спрайтов, но я уже давно разрабатывал игры. Im в настоящее время работает над 2-й игрой, и у меня вражеские корабли движутся справа налево на экране. Я следил за учебниками для разных частей своей игры, а затем добавлял туда, где это необходимо. Я нашел учебник, в котором враги игры следуют по пути безье, и мне удалось реализовать это в моей игре, однако, поскольку я новичок в кривых Безье, я не совсем понимаю их, и алгоритм делает мои спрайты перемещенными сверху вниз но мне нужно, чтобы они шли слева направо.как сделать Sprite следовать кривой Безье
Я включил фрагмент кода, который я использовал, чтобы добавить кривую Безье к моим спрайтам, любые предложения о том, как я могу заставить их перемещаться вправо, а не сверху вниз.
CGMutablePathRef cgpath = CGPathCreateMutable();
float xStart = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float xEnd = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp1X =[self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp1y = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.height];
float cp2x = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp2Y = [self getRandomNumberBetween:0 to:cp1y];
CGPoint s = CGPointMake(xStart, 1024.0);
CGPoint e = CGPointMake(xEnd, -100);
CGPoint cp1 = CGPointMake(cp1X, cp1y);
CGPoint cp2 = CGPointMake(cp2x, cp2Y);
CGPathMoveToPoint(cgpath, NULL, s.x, s.y);
CGPathAddCurveToPoint(cgpath, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y);
SKAction *enemyCurve = [SKAction followPath:cgpath asOffset:NO orientToPath:YES duration:5];
CGPoint location = CGPointMake(-self.frame.size.width-asteroid.size.width, randY);
SKAction *moveAction = [SKAction moveTo:location duration:randDuration];
SKAction *doneAction = [SKAction runBlock:(dispatch_block_t)^(){
asteroid.hidden = YES;
}];
SKAction *moveAsteroidActionWithDone = [SKAction sequence:@[enemyCurve,moveAction, doneAction]];
Благодарим за помощь и предложения.
Это то, что я искал, спасибо за хорошее объяснение, которому я смог реализовать это в своей игре, и он работает. –
Если вы знаете, как бы у меня было лицо спрайта в направлении его перемещения, я устанавливал 'orientToPath: YES', но он просто смотрел на конечную точку кривой, любые предложения о том, как я могу заставить ее указать в направление его путешествия? Еще раз спасибо –