Objektif c ve sprite kitleri için oldukça yeni bir ürün ancak bir süredir oyunlar geliştirdim. Şu anda 2d'lik bir oyun üzerinde çalışıyorum ve sağdan sola doğru hareket eden düşman gemilerim var. Oyunumun farklı bölümleri için dersleri takip ettim ve ardından gerektiğinde ekledim. Oyundaki düşmanların bir bezier yolunu takip ettiği ve bunu oyunumda uygulayabildiğim bir öğretici buldum. Ancak bezier eğrileri için yeni olduğum için onları tamamen anlamadım ve algoritma benim sprite'ları yukarıdan aşağıya taşıyor ama onlara sağdan sola gitmeliyim.Sprite, bezier eğrisini nasıl izler?
Bezier eğrisini eklemek için kullandığım kod snippet'ini sprite'a ekledim, üste doğru değil de sağdan sola nasıl taşıyabileceğime dair önerilerim var.
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]];
Yardımlarınız ve önerileriniz için teşekkür ederiz.
Aradığım şey buydu, iyi bir açıklama için bunu uygulamaya geçirmeyi başardım ve işe yarıyor. –
Herhangi bir olasılıkla hareketli grafiğin nasıl hareket ettiğine baktığımı biliyorsunuz, ben orientToPath: YES'i ayarlıyorum ama sadece eğrinin son noktasını gösteriyor. yönünü gezmek? Tekrar teşekkürler –