草庐IT

SKAction

全部标签

iOS SpriteKit - 游戏开始前倒计时?

刚开始使用Swift在iOS上使用SpriteKit。我有一个教程中的“Breakout”游戏,我想在每次球发射前实现倒计时,方法是在屏幕中间放置一个SKLabel,它在移除自身和游戏开始之前从5倒计时到1。倒计时进行时,您可以看到完整的游戏屏幕,包括墙壁、固定球等。我不知道在游戏循环的哪个位置执行此操作。如果我在didMoveToView中进行倒计时(我在其中创建墙并初始化球和桨),我永远不会看到它,但我会在日志中看到我的调试消息。我猜didMoveToView在SKScene出现之前被调用。我尝试在第一次调用“更新”时使用标志来调用倒计时功能,但我再次看到倒计时在屏幕上出现任何内容

ios - swift spritekit - 无法使用类型为 'runAction' 的参数调用 'SKAction!'

我试图让一个SKSpriteNode在屏幕上弹跳,但是当我运行它时,我得到一个错误(在第一行):cannotinvoke'runAction'withanargumentoftype'SKAction!'我不知道是什么原因造成的。我在下面粘贴了整个runAction代码:self.runAction(SKAction.sequence([SKAction.repeatAction(SKAction.sequence([{self.updatePath()},SKAction.followPath(path.CGPath,duration:3.0)]),count:numberOfBou

ios - SpriteKit : How to call a function within a SKAction. 序列?

一旦Sprite从父级移除,我会尝试调用一个函数,以便Sprite可以复制并再次进入场景。每次我在当前代码中执行此操作时,它都会在原始Sprite出现之前进行复制从父项中删除导致重复的Sprite。这是我目前的代码:importSpriteKitletplankName="woodPlank"classPlankScene:SKScene{varplankWood:SKSpriteNode?varplankArray:[SKSpriteNode]=[]overridefuncdidMove(toview:SKView){plankWood=childNode(withName:plan

swift - SKAction 排序和分组动画

我正在为一个游戏做一些死亡动画,想寻求一些帮助。我希望我的怪物在一阵烟雾中消失,但在它激活一个穿过他body的斜线效果之前。我有3个要使用的动画:weaponSlash-一条划过怪物的线。看起来你用剑砍了他。smoke-一股慢慢散开的烟雾monsterFalling-怪物后退,受到惊吓我想做的是按以下顺序播放:同时,斜线出现,怪物开始后退上述动画大约0.25秒后,我希望云开始出现当云彩即将结束时(所以可能在1s之后)我希望怪物消失移除烟雾、怪物、剑等,并在地上掉一些硬币我是这样开始的,作为一个有点有效的测试:(暂时忽略上面的时间)//Cancelanycurrentactions,li

ios - Swift 和 Spawning 对象的评分方法

我似乎无法弄清楚如何让我的评分发挥作用......游戏的概念是小鸟会从右手边进来,当它们到达左手边时,我希望我的分数增加1。在Obj_c中我会做类似的事情if(bird.enter.x但在swiftspritekit中我不确定如何去做......我遇到的另一个问题是我必须使用计时器来让我的“敌人鸟”产卵(鸟从右到左)(计时器每1秒运行一次生成敌人函数)但是在Obj_c中我会在不同的x坐标处生成3/4,就像之前的代码一样,当鸟CGPointMake()回到屏幕的另一边,这样他们就在一个恒定的循环中有什么快速执行此操作的想法吗?我的代码如下:布局有点奇怪:importSpriteKitcl

swift - 从场景中移除后如何停止 SKSpriteNode 的音频(Swift)?

这是我的代码:overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/letbackgroundImage=SKSpriteNode(imageNamed:"Background.jpeg")backgroundImage.size=self.frame.sizebackgroundImage.position=CGPoint(x:self.frame.width/2,y:self.frame.height/2)backgroundImage.zPosition=1self.addChild(backgroundImag

swift - 如果我总是在不同的类中初始化一种类型的类,这对性能来说是好是坏?

世界!我有一个Actions类,我在我的sprite-kit游戏中保存所有Action、动画和声音播放。所以在我所有的SKNode、SKScene、SKSpriteNode类中,我总是初始化这个Actions类。这对性能有好处吗?或者我必须初始化一次,例如在GameViewController中,然后将此类的副本传递给我需要的所有其他类? 最佳答案 正如Fogmeister在他的评论中提到的,您可以使用静态方法来实现这一点。这也应该有助于提高性能。如果您查看SKAction文档,您会注意到它也使用了类变量和方法。一般来说,如果您不需

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

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

ios - 让节点以恒定速度跟随

我正在尝试制作一个小型迷你游戏,您可以在屏幕上拖动一个球,每隔10秒就会添加一个球跟随您。到目前为止,您可以在屏幕上拖动一个球,一个球会跟随您,但是当另一个球被添加到球组中时。我想这是因为球会跟着我走,这取决于我走多快。那么有没有一种方法可以让球以一定的速度不断跟随我,比如每秒10像素左右,这样可以防止球聚集在一起。我目前正在研究分数,所以它应该很快就会在你生存的每一秒上升。如果你触摸其中一个球,你就会死。下面是代码和我当前代码的简短gif!(https://gyazo.com/1d6a56527bfd0884e8a26cff730f4e03)importSpriteKitimport

ios - SpriteKit 增加移动速度

我有一个简单的游戏,两条线从屏幕的顶部移动到底部。这两条线之间有一个固定的空间,球必须穿过该空间,否则游戏就结束了。我对游戏的基础没有问题,我可以添加两条线,每次都有不同位置的空间,但我也想提高线的移动速度。我尝试使用计时器并增加SKAction.move的TimeInterval,但由于稍后添加的行更快,行之间的水平空间变小,这是我不希望发生的。这是添加两行并将它们移动到屏幕底部的函数。funcaddLines(){letlineNodeFirst=SKSpriteNode(color:.red,size:CGSize(width:random(min:100,max:400),he