gpt4 book ai didi

ios - 如何在 Spritekit 中创建一个 SKActions 数组

转载 作者:行者123 更新时间:2023-11-29 12:26:30 24 4
gpt4 key购买 nike

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

“SKAction *__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]]];

最佳答案

我相信您想要的是 group: 和 sequence: Action 的组合。组将一起运行,序列将等待上一个 Action 完成。

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];

您可能会发现此链接有帮助 Adding Actions to Nodes它在显示不同的组和序列方面做得很好。

希望这会给你想要的结果。

编辑

如果您希望在按顺序运行移动 Action 的同时运行旋转,它看起来像这样。

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];

关于ios - 如何在 Spritekit 中创建一个 SKActions 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com