草庐IT

SKAction

全部标签

swift - 在随机时间生成节点组合 waitForDuration :withRange and runBlock: in an SKAction sequence

我正在使用SpriteKit制作一个游戏,我的节点在屏幕顶部生成并掉落。但是,我希望这些节点以0.1到3秒之间的随机时间间隔生成。例如,第一个节点在1.3秒内生成,下一个节点在1.8秒内生成,然后是2.5秒,然后是0.8秒,等等。我不确定如何利用waitForDuration函数来执行此操作。我目前拥有的代码是:letwait=SKAction.waitForDuration(3,withRange:2)letspawn=SKAction.runBlock{addTears()}letsequence=SKAction.sequence([wait,spawn])self.runAct

ios - 使用 SKAction.scale 改变 Sprite 的比例

尝试让Sprite“PlayButton”的比例继续放大和缩小以提示用户触摸它。似乎无法正常工作。这是菜单类:importSpriteKitclassMenuScene:SKScene{letScalePBup=SKAction.scaleX(to:300,y:300,duration:10)letScalePBdown=SKAction.scaleX(to:-300,y:-300,duration:10)//MARK:-PrivateInstanceVariablesprivateletlogo=GameLogo()privatelettitle=GameTitle()private

ios - SKAction.colorizeWithColor 使 SKLabelNode 消失

我正在使用SKLabelNode。我正在创建它并将它作为child添加到我的场景中并且它显示没有问题,但是当我尝试使用colorizeWithColor()方法更改它的颜色(不是fontColor)时,标签会淡出。这是有问题的行:myLabel.runAction(SKAction.colorizeWithColor(SKColor.blueColor(),colorBlendFactor:1.0,duration:duration))完成此操作后,我将myLabel.color属性打印到控制台,这是我得到的:Optional(UIDeviceRGBColorSpace0.991780

ios - SKAction 抛物线运动

您好,我在SpriteKit工作,我正在尝试让Sprite从一个点移动到另一个点。目前,我可以使用SkAction.moveTo执行此操作,并且Sprite会直线移动。但是,我很好奇Sprite在到达目的地时是否有可能沿着抛物线而不是直线移动。感谢所有帮助。 最佳答案 这是创建抛物线UIBezierPath的简单方法:letpath=UIBezierPath()path.moveToPoint(CGPointZero)path.addQuadCurveToPoint(CGPoint(x:100,y:0),controlPoint:C

objective-c - SKAction.runAction() 完成 block (闭包)的内存泄漏

我经常将SKAction与完成block一起使用,并在完成block中使用调用runAction()的变量,就像这样。self.runAction(SKAction.waitForDuration(2.0)){self.removeFromParent()}这会导致保留循环吗?我认为,如果SKNode没有完成变量,则不会发生保留循环。这是正确的吗? 最佳答案 我的测试结果,SKAction完成闭包没有强引用。此外,如果我将闭包作为变量添加到SKNode的子类并在闭包中访问self,则SKNode的deinit()从未调用过。

swift - SpriteKit SKAction 暂停延迟

我有一个spawnAction,我使用NSTimer来创建它,但我将它更改为SKAction以便它会在场景暂停时停止:letSpawnAction=SKAction.sequence([SKAction.waitForDuration(0.5),SKAction.runBlock(Spawn)])self.runAction(SKAction.repeatActionForever(SpawnAction))现在的问题是我认为代码的waitForDuration部分存在延迟,因为它不会在场景取消暂停后立即工作。这是我用来暂停/取消暂停游戏的代码:overridefunctouchesB

swift - Swift 中闭包表达式的等效性,例如 SKAction 完成

下面的闭包表达式是否等价?sprite.runAction(action,completion:{print("done")})sprite.runAction(action,completion:{()->Voidinprint("done")})sprite.runAction(action){()->Voidinprint("done")}在上面的例子中使用了SpriteKit的runAction()使用完成block,大概第一个示例是隐式的;然而,这是我不确定我是否理解的第三个例子。在第三个例子中,函数runAction()没有返回任何东西;那么,当Action完成时如何调用完

swift - Unity 中给定持续时间的 SKAction scaleToX 等效项

我正在尝试在Unity中的给定持续时间内缩放Sprite的x轴。基本上我在通过以下方式使用Swift之前完成了此操作,letincreaseSpriteXAction=SKAction.scaleXTo(self.size.width/(mySprite?.sprite.size.width)!,duration:0.2)mySprite!.sprite.runAction(increaseSpriteXAction)mySprite!.sprite.physicsBody=SKPhysicsBody(rectangleOfSize:mySprite!.sprite.size,cent

swift - SKAction : perform(_:onTarget:) 中的选择器是什么

文档说:Declaration:classfuncperform(_selector:Selector,onTargettarget:Any)->SKActionselectorTheselectorofthemethodtocall.我不确定方法的选择器是什么。因此问题。这似乎是方法/函数的名称,但(对我而言)产生了不确定性,因为它从未被描述为是这样的,所以我有点认为它可能是别的东西,也许是更深刻的东西。我假设perform(_:onTarget)是一种让代码的一部分灵活地告诉对象在运行时决定执行什么操作的方法。但我不完全确定我的目的是否正确。这就是我思考这个问题的背景。我的问题不仅

swift - SKAction 运行操作中的代码未执行

SKAction.runAction中的代码块由于某种原因永远不会执行。需要澄清的是,startAction中的两行由于某种原因从未运行,即使其他行确实运行。在这些行上放置断点证明这些行永远不会执行。有什么线索吗?//SetfirstframeletfirstFrame=frames[0]letanimationNode=SKSpriteNode(texture:firstFrame)animationNode.position=CGPoint(x:x,y:y)//SetstartactionletstartAction=SKAction.run({gAudio.playSound(f