草庐IT

Sprite-Kit

全部标签

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

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

swift - SpriteKit SKPhysicsJoint修复了奇怪的行为

我正在尝试将两个SKNode连接在一起,它们都具有相同大小的圆形物理体。它们的位置相互接触,我希望它们被锁在一起。从文档中,听起来我想要一个SKPhysicsJointFixed,并且我尝试创建一个anchor是两个节点之间的中点-如下所示:letfixedJoint=SKPhysicsJointFixed.joint(withBodyA:atom1.physicsBody!,bodyB:atom2.physicsBody!,anchor:midPoint)但这会导致一种奇怪的行为,即在形成关节之后,顶部节点落入底部节点-在关节存在之前,物理体相互靠在一起。如果我使用销接头代替相同的代

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

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

swift - 在不再次运行的情况下更改 touch 内部的 node.name?

我想点击某个spritenode,改变那个spritenode的值。这就是问题所在。当我这样做并设置一个if语句时,它知道转到该if语句。但是,我不希望它在下次单击按钮之前运行。示例:apple.name="apple"overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letlocation=touch.location(in:self)letnode:SKNode=self.atPoint(location)ifnode.name=="apple"{appple.name="oran

swift - 更改场景中所有节点的颜色?

所以这似乎是一个愚蠢的问题;但是,我会看看是否有人有答案。有没有办法快速改变场景中所有节点的颜色?例如反转所有颜色?我已经使用SpriteKit创建了一个游戏,并且想创建不同的主题。而不是一个一个地改变每个节点。我想至少一次完成大部分工作。如果有人有任何建议,将不胜感激!谢谢!-马特 最佳答案 在你想要的场景里面,fornodeinself.children{//Iusedspritenode,butyoucanaddasmanynodeswithcoloroptionsasyoulike.guardletsnode=nodeas?

swift - 如何将颜色 Sprite 调用到某个位置(Swift 3)

所以在我的项目中,我基本上是在尝试制作一个随机生成的迷宫,其入口和导出都是随机的。到目前为止,我有三个类(一个迷宫类、一个游戏场景类和一个网格类),我已经成功地编写了一个随机生成的迷宫。但是我的问题是迷宫类(这是随机生成代码发生的地方)纯粹包含迷宫的数据,但没有与图形的当前连接。因此,当我运行我的应用程序时,会出现一个空白屏幕。我正在尝试(但不确定如何)做的基本上是在迷宫墙所在的位置放置一条线(又名一条线形的黑色Sprite)。因此,我的迷宫的工作方式是它是一个网格(数组),其中每个数组单元格的“墙”(上、下、左或右)被定义为真或假。如果细胞壁是假的,那么那里就没有迷宫墙;但如果这是真

swift - 如何将 SKSpriteNode 放在 CAShapeLayer 前面?

我想在CAShapeLayer前面显示一个SKSpriteNode,这是我正在使用的代码:importSpriteKitimportGameplayKitimportUIKitclassGameScene:SKScene{letprogressLayer=CAShapeLayer()overridefuncdidMove(toview:SKView){letcircle=UIView(frame:CGRect(x:0,y:0,width:self.size.width,height:self.size.height))view.addSubview(circle)view.sendSu

ios - SpriteKit 增加移动速度

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

swift - 在 Swift 中按住按钮时移动对象

我有一个SpaceInvaders小游戏,我添加了两个按钮leftButton和rightButton我希望ship移动的时间与一个按钮一样长在正确的方向上触摸并按住按钮。我让它朝正确的方向移动,但我必须反复点击按钮,但我希​​望ship在玩家按住按钮时移动。为简单起见,我只发布了左侧按钮的代码,因为我相信对另一个按钮进行编码的方式是相同的:classGameScene:SKScene{varleftButton=SKSpriteNode()varship=SKSpriteNode()overridefuncdidMove(toview:SKView){leftButton=self.

swift - 如何让两个 SKSpriteNode 的位置始终相同?

我有两个SKSpriteNode,我想保持相同的位置。newLeftObject和newLeftObjectBackground。最好的方法是什么使两个物体即使在对它们施加力时也始终保持相同的位置。我尝试将它们的质量和密度设置为彼此相等,但它们在下落时的位置仍然略有不同。谢谢,感谢您的帮助!funccreateNewObjectLeftAndMoveToCenter(){colorBackground.removeFromParent()blackBackground.removeFromParent()varnewLeftObject=SKSpriteNode()varnewRigh