我对Objective-C和Sprite Kit比较新,但我已经从事游戏开发一段时间了。我目前正在开发一款2D游戏,其中有敌舰从右到左移动屏幕。我一直在跟随不同部分的教程并在必要时添加内容。我找到了一个教程,其中游戏中的敌人遵循贝塞尔曲线路径,我已经成功将其实现在我的游戏中,但是由于我是新手,我并不完全理解它们,而且算法使我的精灵从上到下移动,但我需要它们从左到右移动。
我已经包含了用于向我的精灵添加贝塞尔曲线的代码段,您有什么建议可以让它们从右到左移动而不是从上到下?
我已经包含了用于向我的精灵添加贝塞尔曲线的代码段,您有什么建议可以让它们从右到左移动而不是从上到下?
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
,但它只朝曲线的最终点朝向,你有什么建议可以让它指向它正在移动的方向吗?再次感谢。 - Tony_89