草庐IT

Sprite-kit

全部标签

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 - SKSpriteNode 卡在 init(edgeLoopF​​rom :) - SKPhysicsBody

我有一个名为“Floor”的单独类,如下所示。classFloor:SKNode{overrideinit(){super.init()//letedgeFrame=CGRect(origin:CGPoint(x:1,y:1),size:CGSize(width:1078,height:1950))//self.physicsBody=SKPhysicsBody(edgeLoopFrom:edgeFrame)letborderBody=SKPhysicsBody(edgeLoopFrom:self.frame)borderBody.friction=0self.physicsBody=

ios - Swift Spritekit - 如果已经添加了相同的 Sprite ,则将其添加到场景时会出现问题

我的SKScene使用以下代码以特定时间间隔将Sprite添加到屏幕,但是如果在添加下一个Sprite时屏幕上已经有一个Sprite,我的应用程序会卡住。有没有办法在应用程序不卡住的情况下将相同的Sprite添加到屏幕?lettimer=SKAction.waitForDuration(1.00)letaddSpriteNode=SKAction.runBlock{self.addSprite()}letsequence=SKAction.sequence([timer,addSpriteNode])self.runAction(SKAction.repeatActionForever

swift - 如何在 Swift 中删除 Sprite Kit 中的所有节点?

我有一个游戏,与敌人的接触结束了游戏,但是当我在敌人节点上使用removeFromParent时,它只会删除最近的一个。敌人是使用switch语句生成的,以确定他们从哪一侧进入,一旦发生接触并且游戏结束,节点仍然存在会导致更多接触,从而使游戏变得困惑。如果用户没有按下任何东西,并且敌人在游戏结束屏幕期间完成了他们的轨迹,那么问题就不会发生。我可以在游戏结束后以任何方式从屏幕上杀死所有节点吗?我可以在结束屏幕中暂停输入大约3秒钟让操作完成吗?我是否需要在敌人生成时枚举它们以便在游戏结束后将它们一一杀死?我已经坚持了大约3天,希望得到一些帮助。我认为我解释得相当好,但如果我需要显示任何代码

xcode - 如何检测 spritekit 中的触摸?

我有一个sprite,如果按下该sprite,我想打印一些文本。我在上面找到的每个教程似乎都已过时。这怎么可能?应该是这样的:ifSpriteistouched{print("SomeText")} 最佳答案 如果您有自定义的Sprite类,只需重写touchesBegan方法例子classPlayer:SKSpriteNode{requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)userInteractionEnabled=true}overridefunc

swift - 如何使 Sprite 在对象内反弹?

我试图让一个球在一个圆圈内弹跳,这样它就不会超出圆周。现在球在self.frame中反弹。如何让球在圆圈内弹跳?letsceneBody=SKPhysicsBody(edgeLoopFromRect:self.frame)sceneBody.friction=0self.physicsBody=sceneBodyvarball=SKShapeNode(circleOfRadius:9)ball.fillColor=SKColor.whiteColor()ball.position=view.centerball.physicsBody=SKPhysicsBody(circleOfRad

swift - 为 SpriteKit 创建按钮

我正在为我正在构建的sprite工具包应用程序创建主菜单。在我的整个项目中,我一直使用SKScenes来保存我的关卡和实际游戏玩法。但是,现在我需要一个主菜单,其中包含“播放”、“级别”、“商店”等按钮...但是,我现在添加按钮的方式让我感觉不太舒服,就像这样:letcurrentButton=SKSpriteNode(imageNamed:button)//CreatetheSKSpriteNodethatholdsthebuttonself.addChild(currentButton)//AddthatSKSpriteNodetotheSKScene然后我像这样检查按钮的触摸:o

Swift SpriteKit 局部变量

我有一个名为bombtower的局部变量。代码如下:ifcheckMark.contains(touchLocation){letbombTowerLevel1=SKSpriteNode(imageNamed:"bombtowertrial2")bombTowerLevel1.name="bombtower"//changelatermaybebombTowerLevel1.position=bombTowerGhost.positionbombTowerLevel1.zPosition=1//changelaterforhealthbombTowerLevel1.setScale(f

swift - 这两个 SpriteKit 函数有什么区别?

我不知道这两个函数有什么区别。首先:coin.run(SKAction.moveTo(y:-146.115,duration:0))第二个:coin.position.y=-146.115 最佳答案 SKAction直到下一帧才会被处理——紧接在update之后。如果您在didEvaluateActions之后调用.run,您的位置将不会更新,并且您可能会因此遇到错误。第二行代码将立即执行,无论您在SK循环中的位置如何。例如,如果您正在使用物理学,并在didBegin(contact)中调用.run(.move(,然后期望该Spri

ios - 查看 Apple 的 "Adventure Game"教程 "in"是什么意思?

在查看Apple使用SpriteKit的教程冒险游戏的源代码时,我一直看到变量被声明,并且在声明之后有左括号和“in”这个词。这是我使用的代码:letrightThumbstickHandler:GCControllerDirectionPadValueChangedHandler={dpad,x,yinletlength=hypotf(x,y)iflength就像那样,“dpad,x,yin”。有谁知道那些是什么/它们的用途是什么? 最佳答案 这是一个闭包定义,它捕获三个变量,其参数是dpad、x和y。in声明闭包执行的代码的实际