草庐IT

SKActions

全部标签

ios - 将一系列不同的 SKActions 应用于不同的 SKNodes

我想创建一个SKAction序列,每个SKAction对应一个不同的SKSpriteNode。我想淡化我的layer节点,将其从父节点中删除,等待3秒,然后为我的snake节点启动一个moveSKAction。这是一些代码:funcstartGame(){layer.run(SKAction.sequence([SKAction.fadeAlpha(to:0,duration:1),SKAction.removeFromParent(),SKAction.wait(forDuration:1),]))//Heremovethesnakenode}问题是,如果我在注释处添加snake.r

swift - 多个 SKSpriteNode 的 SpriteKit 多个 SKActions - 等待所有完成

我正在开发一款iOS游戏,但遇到了问题。我需要显示x个Sprite(对于每个Sprite,我都有一个比例SKAction)。我需要能够等到所有SKActionSprite出现,然后再做其他事情。每个SKAction在一个单独的线程中运行。我怎么能等?这是一段代码:fortileintiles{letrandomNum:UInt32=arc4random_uniform(20)//rangeis0to99letrandomTime:TimeInterval=TimeInterval(randomNum/10)letscale=SKAction.scale(by:1,duration:2,

swift - 如何循环动态延迟的 SKActions 序列

我需要运行未知数量(来自字典数组)的SKAction序列,这些序列是动态创建的,并使用随着循环进行而增加的延迟在循环中进行偏移。循环的打印输出应按以下顺序出现showline5hidingeverythingshowline6hidingeverythingshowline2hidingeverything为了获得这个功能,我使用了这段代码funcdisplay(winningLines:[Int:AnyObject]){vardelay=0.0varactions=[SKAction]()lethideAction=SKAction.run{print("hidingeverythi

ios - 如何创建自定义 SKActions?

你好,我想做的就是创建一个SKAction,它对物理对象执行类似于wheelRight.physicsBody.velocity=CGVectorMake(0,1000);的操作。 最佳答案 使用SKActionrunBlock:方法:SKAction*changeVelocity=[SKActionrunBlock:^{wheelRight.physicsBody.velocity=CGVectorMake(0,1000);}];SKActionsequence=[SKActionsequence:@[...,changeVelo

ios - 在两个或多个 SKSpriteNode 上同步 SKActions?

我想同步移动两个(或更多)SKSpriteNode。任何差异都会显示出来。我尝试按顺序为每个Sprite触发SKAction,当最后一个Sprite完成时,它会触发一个新Action。但事实证明,操作的结束顺序与它们开始的顺序不同,这会导致明显的时间差异。有没有办法在两个或多个具有持续时间的Sprite上并行运行SKActions,以便它们在完全相同的时间结束,或者至少按照它们开始的顺序?这是一个不起作用的原理示例:-(void)testMethod1{SKSpriteNode*child_1=[arrayWithSpritesobjectAtIndex:1];SKSpriteNode

ios - 知道所有 SKActions 何时完成或没有任何运行

我有许多SKActions在不同的节点上运行。我如何知道它们何时全部完成?我想在动画运行时忽略触摸。如果我能以某种方式在多个节点上并行运行操作,我可以等待最后一个操作运行,但我看不到任何方式来协调跨节点的操作。我可以通过遍历场景的所有子项并检查每个子项的hasActions来伪造这一点。看起来有点蹩脚,但它确实有效。 最佳答案 最简单的方法是使用dispatchgroup.在Swift3中,这看起来像funcmoveAllNodes(withCompletionHandleronComplete:(()->())){letgroup

iphone - 有没有办法暂停 SKActions?

我想创建一个暂停菜单,但我不知道最简单的方法...我认为一个简单的方法是暂停我所有的SKActions,但我在引用资料中找不到任何方法。感谢您的帮助。 最佳答案 文档说父SKView对象有一个暂停的属性。将其设置为YES以暂停场景。PausedABooleanvaluethatindicateswhethertheview’ssceneanimationsarepaused.@property(getter=isPaused,nonatomic)BOOLpausedDiscussionIfthevalueisYES,thenthes

swift - SKActions 无法识别某些值的变化

我有3组Sprite(EnemyGroups),这些组按特定顺序排列(每组延迟一秒)。请看代码:敌人集团:structEnemyGroup{varenemies:[Enemy]varisVisible:BoolvarisStatic:Boolfuncsetup(){ifisStatic{forenemyinenemies{enemy.sprite.alpha=1.0enemy.sprite.isUserInteractionEnabled=false}isVisible=true}}mutatingfuncswitchEnemiesON(){if!isStatic{forenemyin

arrays - 无法创建 SKActions 数组

我正在Swift中尝试使用SpriteKit,但不知何故似乎无法创建要按顺序使用的Action数组。我已将其拆分以尝试找出问题所在,但到目前为止还没有运气。funcanimateBackground(){letmoveLeft=SKAction.moveByX(100,y:0,duration:3)moveLeft.timingMode=SKActionTimingMode.EaseInEaseOutletmoveRight=SKAction.reversedAction(moveLeft)letactions=[moveLeft,moveRight]//尝试创建Action数组时出现

key - 如何在 Swift 中将键分配给 SKActions

我希望有人能够帮助我解决这个问题。我似乎无法找到一种方法来为removeActionWithKey方法的SpriteKit的SKAction分配一个键。我也曾尝试将操作分配给字典中的键,但程序无法识别键分配,因此返回了一个nil值。这是我尝试做的:vartextureanimation=SKAction.repeatActionForever(SKAction.animateWithTextures(_walkingframes,timePerFrame:0.1))vardictionary=["animation":textureanimation]object.runAction(
12