我正在创建一个游戏。当游戏结束时,我会显示一个按钮“再玩一次”,理想情况下,它应该只是重新加载场景。varviewSize=currentScene.view?.bounds.sizeletsceneG=Level1(size:viewSize!)currentScene.view?.presentScene(sceneG)但不幸的是,我收到了这个错误:AttempedtoaddaSKNodewhichalreadyhasaparent:因为有些节点已经存在于场景中,无法再次添加。有没有办法在再次呈现场景之前重新加载场景或删除所有节点?谢谢根据要求,这是Level1类:importSp
我正在iOSSwift中设计一款游戏。我有一个大约100个1920x1080pPNG的大型纹理图集。当我调用这些函数时,由于内存压力,它使应用程序崩溃。当我禁用该功能时,我的应用程序运行正常。我可以通过编辑我的代码来防止这种崩溃吗?还是我的纹理图集太大了?代码:varwaterWave:SKSpriteNode!varwaterWalkingFrames:[SKTexture]!funcaddWater(){letwaterAnimatedAtlas=SKTextureAtlas(named:"water.atlas")varwaterFrames=[SKTexture]()letnu
我正在开发一款游戏,我正在寻找帮助或代码以在用户点击按钮时在我的应用中显示GameCenter排行榜。我不知道从哪里开始,因为所有其他答案似乎都是针对Obj-C的,谢谢!编辑:下面的答案非常有效,但对于那些想知道如何在SpriteKit中执行此操作的人来说,只需将以下方法添加到GameViewController并添加一个NotificationCenterObserverNSNotificationCenter.defaultCenter().addObserver(self,selector:"showLeaderboard",name:"showLeaderboard",obje
我有一个球节点和一个孔节点。我想检测球什么时候会落入货舱。目前我正在使用didBeginContact,但它只给出了接触开始时两个节点的距离,在这种情况下球不一定会落入洞中(当两个中心之间的距离有没有办法在接触发生后跟踪球的位置? 最佳答案 您可以添加不可见的SKSpriteNodes并跟踪球何时接触到它们。在进入洞之前,node1刚好位于洞的顶部(球在进入洞之前必须经过或接触的区域),node2就在球洞之后(同样,球必须在进入球洞后穿过-或接触-的区域)。如果球接触到node1但没有接触到node2,您知道它几乎要进洞了,但后来却
在带有SpriteKit的Xcode中,在每个项目中我都将showsNodeCount设置为true,但我只看到fps。这太奇怪了。我不知道是什么导致了这个问题。ifletscene=GameScene(fileNamed:"GameScene"){//Configuretheview.letskView=self.viewas!SKViewskView.showsFPS=trueskView.showsNodeCount=true/*SpriteKitappliesadditionaloptimizationstoimproverenderingperformance*/skView
当我使用Swift从头开始创建SpriteKit游戏时,在我的GameScene的didMoveToView方法中,我写道:print(frame.size.width)print(frame.size.height)我回来了。1024.0768.0我的应用程序当前正在运行的是纵向模式。我认为框架是可以包含节点的最小矩形。如果我在屏幕上添加一个形状来确认我正在阅读的内容,我会添加以下代码:anchorPoint=CGPoint(x:0.5,y:0.5)letleftShape=SKShapeNode(rectOfSize:CGSize(width:frame.size.width/
我想做一条曲线,当用户移动手指时,曲线会改变弧度,但我做的代码似乎有问题,当我移动手指时有很多曲线:(下面是我的代码,并遵循了糟糕构建的屏幕截图。其实我也想知道如何用UIPanGestureRecognizer实现这个功能。importSpriteKitimportAVFoundationimportUIKitclassHome:SKScene{varhappiness:CGFloat{returncurrentPoint.y}varcurrentPoint=CGPoint(x:0,y:1024)overridefuncdidMoveToView(view:SKView){backgr
我想围绕其轴旋转一个SKShapeNode(我认为在SpriteKit这样的框架中很容易完成此任务)。形状旋转,但围绕一个似乎在屏幕外的轴旋转...对这里出了什么问题有什么想法吗?importSpriteKitclassSquare:NSObject{//thisgetscreatedandinitializedlater...varshape:SKShapeNode?=nil//…funcanimateMe(){letaction=SKAction.rotateByAngle(CGFloat(M_PI),duration:1)self.shape.runAction(action,c
我正在使用Swift2在XCode7中制作游戏。我有一个变量,我想从开始屏幕(它是一个UIViewController)传递到游戏场景(它是一个SKScene)。我希望玩家在UIView中选择一个角色并在SKScene中使用它。我还希望SKScene中的分数显示在作为UIView的游戏结束屏幕中。我看过在两个UIViewController之间和两个SKScenes之间传递数据的教程,但它们都不适用于这种情况。如何将变量从UIViewController传递到SKScene(反之亦然)? 最佳答案 如果您还没有找到答案,我确实找到了
我正在使用SpriteKit和Swift构建iPhone游戏,但我的碰撞检测系统无法正常运行。当我的“子弹”物理体和我的“玩家”物理体发生碰撞时,碰撞检测函数被调用多次,通常是4-12次。我已经尝试将“usesPreciseCollisionDetection”设置为true,但它仍然存在问题。此外,当子弹以一定角度而不是直接击中玩家时,该方法似乎被调用了更多次。有什么想法可以解决这个问题吗?碰撞类型:enumColliderType:UInt32{casePlayer=0b1caseBullet=0b10}玩家物理body设置:playerBody!.categoryBitMask=