草庐IT

SKAction

全部标签

swift - 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行?

Rob提供agreatObjective-Csolution用于子类化NSOperation以实现SKAction对象的串行排队机制。我在自己的Swift项目中成功实现了这一点。importSpriteKitclassActionOperation:NSOperation{let_node:SKNode//Thespritenodeonwhichanactionistobeperformedlet_action:SKAction//Theactiontoperformonthespritenodevar_finished=false//Ourread-writemirrorofthes

ios - 通过触摸以有限的旋转速度旋转 Sprite

我试图让我的spriteNode在手指触摸时旋转。到目前为止我可以做到,但我想要的是我的节点有一个“旋转速度”。所以我计算角度的长度然后设置不同的时间来旋转它(如果弧长,则需要时间......)。这是我的代码:overridefunctouchesMoved(touches:NSSet,withEventevent:UIEvent){_isTouched=truefortouchintouches{letlocation:CGVector=touch.locationInNode(self)-miner.positionminer.weaponRotation=location.ang

swift - 如何将敌人移向移动的玩家?

我正在创建一个简单的sprite套件游戏,它将玩家定位在屏幕的左侧,而敌人则从右侧接近。由于玩家可以上下移动,我希望敌人“巧妙地”调整他们朝向玩家的路径。我尝试在玩家移动时删除并重新添加SKAction序列,但下面的代码导致敌人根本不显示,可能是因为它只是在每个帧更新时添加和删除每个Action,所以他们从来没有搬家的机会。希望就创建“智能”敌人的最佳实践获得一点反馈,这些敌人会随时向玩家的位置移动。这是我的代码:funcmoveEnemy(enemy:Enemy){letmoveEnemyAction=SKAction.moveTo(CGPoint(x:self.player.pos

ios - SpriteKit 中的正弦波运动

我想使从屏幕上的第一个点到屏幕上的最后一个点的正弦波运动与屏幕的大小无关。这是我的代码,但它不能正常工作:SKSpriteNode*RedBird=(SKSpriteNode*)[selfchildNodeWithName:@"RedBird"];CGPointcurrentPoint=CGPointMake(-60,0);doublewidth=self.frame.size.width/4;CGPointcp1=CGPointMake(width,self.frame.size.height/2);CGPointcp2=CGPointMake((width*3),0);CGPoin

ios - SpriteKit 中的正弦波运动

我想使从屏幕上的第一个点到屏幕上的最后一个点的正弦波运动与屏幕的大小无关。这是我的代码,但它不能正常工作:SKSpriteNode*RedBird=(SKSpriteNode*)[selfchildNodeWithName:@"RedBird"];CGPointcurrentPoint=CGPointMake(-60,0);doublewidth=self.frame.size.width/4;CGPointcp1=CGPointMake(width,self.frame.size.height/2);CGPointcp2=CGPointMake((width*3),0);CGPoin

ios - 进入后台时 Spritekit 崩溃

好吧,伙计们,我一直在开发一个应用程序,其中我有一个NSMutableDictionary和一个SKAction对象。SKAction用于播放声音。这一切都很好,除了......应用程序在进入后台时崩溃,堆栈跟踪如下:*thread#1:tid=0x187d7,0x3461b932libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient+10,queue='com.apple.spritekit.renderQueue,stopreason=EXC_BAD_ACCESS(code=1,address=0x1)frame#0

ios - 进入后台时 Spritekit 崩溃

好吧,伙计们,我一直在开发一个应用程序,其中我有一个NSMutableDictionary和一个SKAction对象。SKAction用于播放声音。这一切都很好,除了......应用程序在进入后台时崩溃,堆栈跟踪如下:*thread#1:tid=0x187d7,0x3461b932libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient+10,queue='com.apple.spritekit.renderQueue,stopreason=EXC_BAD_ACCESS(code=1,address=0x1)frame#0

ios - SKAction playSoundFileNamed 在接到两个连续的电话后不起作用

我想弄清楚为什么playSoundFileNamed在接到两个连续的电话后不起作用。实际上,它仅在接到第一个电话后才起作用。复制步骤是:开始游戏等一个电话,然后转到后台电话通话结束(来电者拒绝或打断)回到前台在此之后,播放touchesBegan的声音仍然有效。当我重复上面的步骤(跳过第一步)时,touchesBegan的机制停止工作。不确定为什么会这样......这是可以产生所描述行为的代码:@interfaceGameScene()@property(nonatomic,strong)SKAction*sound;@end@implementationGameScene-(void

ios - SKAction playSoundFileNamed 在接到两个连续的电话后不起作用

我想弄清楚为什么playSoundFileNamed在接到两个连续的电话后不起作用。实际上,它仅在接到第一个电话后才起作用。复制步骤是:开始游戏等一个电话,然后转到后台电话通话结束(来电者拒绝或打断)回到前台在此之后,播放touchesBegan的声音仍然有效。当我重复上面的步骤(跳过第一步)时,touchesBegan的机制停止工作。不确定为什么会这样......这是可以产生所描述行为的代码:@interfaceGameScene()@property(nonatomic,strong)SKAction*sound;@end@implementationGameScene-(void

ios - 停止永远重复的 SKAction - Sprite Kit

我想根据它的旋转在我的spriteNode上运行两个动画。如果值为负,则运行其中一个动画,如果为正,则运行另一个。我设法做到了(有点),但我遇到了问题。如果Animation1正在运行,并且zRotation变为正值,则它们都会运行,因为它们会永远重复。所以我这样做了:NSMutableArray*walkingTextures=[NSMutableArrayarrayWithCapacity:14];for(inti=1;i然后当我想让它停止时:[selfremoveActionForKey:@"animation1"];但是它一直在运行Action,那我怎么才能停止Action呢?