Im ziemlich neu in Objective-C und Sprite-Kit, aber ich habe Spiele-Entwicklung für eine Weile getan. Ich arbeite gerade an einem 2D-Spiel und ich habe feindliche Schiffe, die sich auf dem Bildschirm von rechts nach links bewegen. Ich habe Tutorials für verschiedene Teile meines Spiels verfolgt und dann hinzugefügt, wo nötig. Ich fand ein Tutorial, in dem die in Spiel Feind einem Bézier-Pfad folgen, und ich habe es geschaffen, dies aber in meinem Spiel zu implementieren, wie ich bin neu Kurven Bezier ich sie nicht vollständig verstehen, und der Algorithmus macht mein Sprites von oben nach unten bewegen aber ich brauche sie von links nach rechts zu gehen.wie Sprite machen folgen Bezierkurve
Ich habe den Code-Schnipsel enthält, die ich verwendet habe die Bezierkurve meine Sprites irgendwelche Vorschläge, hinzufügen, wie ich kann sie von rechts nach links statt von oben nach unten bewegen.
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]];
Vielen Dank für jede Hilfe und Anregungen.
Das war, was ich suchte, danke für eine gute Erklärung, die ich geschafft habe, dies in mein Spiel zu implementieren, und es funktioniert. –
Irgendwie wissen Sie, wie ich das Sprite in die Richtung bewegen würde, in der es sich bewegt, ich setze 'orientToPath: YES', aber es zeigt nur den letzten Punkt in der Kurve, irgendwelche Vorschläge, wie ich es in den Punkt bringen kann Richtung seiner Reise? Danke nochmal –