Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Spritekit中创建SKActions数组_Ios_Arrays_Sprite Kit_Skaction - Fatal编程技术网

Ios 如何在Spritekit中创建SKActions数组

Ios 如何在Spritekit中创建SKActions数组,ios,arrays,sprite-kit,skaction,Ios,Arrays,Sprite Kit,Skaction,我试图使用objective-c在Spritekit中创建一个SKActions数组,以便两个数组并行执行。“旋转”不是一个适合我的数组,除非它引起了我怀疑是这里的问题。我期望从这段代码中得到的是actionMove和rotation将并行运行,然后它将转到actionMove1和actionMove2并完成runAction。我在下面显示的最后一行代码中遇到以下错误(仅添加了所需代码的一部分) 类型为“SKAction*\u_strong[3]”的集合元素不是Objective-C对象 SKA

我试图使用objective-c在Spritekit中创建一个SKActions数组,以便两个数组并行执行。“旋转”不是一个适合我的数组,除非它引起了我怀疑是这里的问题。我期望从这段代码中得到的是actionMove和rotation将并行运行,然后它将转到actionMove1和actionMove2并完成runAction。我在下面显示的最后一行代码中遇到以下错误(仅添加了所需代码的一部分)

类型为“SKAction*\u_strong[3]”的集合元素不是Objective-C对象

SKAction * actionMove = [SKAction moveTo:CGPointMake(actualX2, actualY2) duration:actualDuration];
SKAction * actionMove1 = [SKAction moveTo:CGPointMake(actualX3, actualY3) duration:actualDuration];
SKAction * actionMove2 = [SKAction moveTo:CGPointMake(actualX4, actualY4) duration:actualDuration];
int rotate = arc4random() % 5;
SKAction * rotation = [SKAction rotateByAngle:M_PI/rotate duration:0.5];

SKAction * moveArray[] = {actionMove, actionMove1, actionMove2};

[game_piece1 runAction:[SKAction group:@[moveArray, rotation]]];

我相信你想要的是一组:和顺序:行动的组合。组将一起运行,序列将等待上一个操作完成

SKAction * actionMove = [SKAction moveTo:CGPointMake(actualX2, actualY2) duration:actualDuration];
SKAction * actionMove1 = [SKAction moveTo:CGPointMake(actualX3, actualY3) duration:actualDuration];
SKAction * actionMove2 = [SKAction moveTo:CGPointMake(actualX4, actualY4) duration:actualDuration];
int rotate = arc4random() % 5;
SKAction * rotation = [SKAction rotateByAngle:M_PI/rotate duration:0.5];

SKAction *firstStep = [SKAction group:@[actionMove, rotation]];
SKAction *sequence = [SKAction sequence:@[firstStep, actionMove1, actionMove2]];

[game_piece1 runAction:sequence];
您可能会发现此链接很有帮助,它可以很好地显示不同的组和序列

希望这会给你想要的结果

编辑

如果您希望在Order中运行移动操作的同时运行旋转,它将如下所示

SKAction * actionMove = [SKAction moveTo:CGPointMake(actualX2, actualY2) duration:actualDuration];
SKAction * actionMove1 = [SKAction moveTo:CGPointMake(actualX3, actualY3) duration:actualDuration];
SKAction * actionMove2 = [SKAction moveTo:CGPointMake(actualX4, actualY4) duration:actualDuration];
int rotate = arc4random() % 5;
SKAction * rotation = [SKAction rotateByAngle:M_PI/rotate duration:0.5];

SKAction *sequence = [SKAction sequence:@[actionMove, actionMove1, actionMove2]];
SKAction *group = [SKAction group:@[sequence, rotation]];

[game_piece1 runAction:group];

@SkylarLauren我为这一混乱道歉。我的计划是实际上也有一个三个旋转的数组。因此将有两个阵列,三个动作移动和三个旋转并行运行。这就是为什么我使用group:@而不是sequence:@@I我更新了答案。您当时与原始代码非常接近。唯一的问题是,您并没有传递一个实际的动作数组,而是创建一个序列动作来传递到组中。