jjzjj

ios - 如何从内存中删除子类 SKNode?

我在一个单独的Swift文件中创建了一个“SPriteKitButton”SKNode子类,用于在SpriteKit中制作自定义按钮类对象。我像这样初始化一个新按钮:self.homeButton=SpriteKitButton(buttonUnpressedImage:"homeUnpressed.png",buttonPressedImage:"homePressed.png",buttonName:"homeButton",scale:1,buttonAction:returnHome)self.addChild(homeButton)该按钮效果很好,但是当我使用presentS

swift - SpriteKit - 如何检查 SKNode 之间的交叉点?

我正在测试一个非常基础的项目,我似乎无法让intersectsNode函数正常工作。在我的GameScene.swift文件中,我创建了一个名为world的SKShapeNode,并在其中创建了另一个名为player的SKShapeNode和一个旋转的SKShapeNode称为spinningGreenSquare。在我的GameViewController.swift文件中,我设置了一个touchesMoved函数来查找触摸的位置,location,并移动player给它。现在,正如您将在下图中看到的,我然后测试2是否相交,如果返回值为真,则执行一些操作。但是,当我运行我的项目时,p

ios - 防止 SKNode 离开 View

我正在开发一个“太空入侵者”游戏,我已经实现了CMMotionManager来移动我的heroShip倾斜(游戏只能在横向运行),但由于某种原因我的船会移出视野,即使self.physicsBody=SKPhysicsBody(edgeLoopFromRect:self.frame)应该通过制造物理优势来防止这种情况发生。有什么想法吗?importSpriteKitimportCoreMotionclassGameScene:SKScene,SKPhysicsContactDelegate{letcollisionBulletCategory:UInt32=0x1,withEvente

swift - 我应该如何决定我的函数是应该返回可选的还是隐式解包的可选的?

如果我需要返回一些可以为nil的东西,我应该如何决定我的func应该返回可选的还是隐式解包的可选的?我见过任何一个版本的Swift方法,我很好奇是什么驱使决定返回一个可选的而不是从函数/方法中隐式解包的可选的,因为无论哪种方式,您似乎仍然需要在使用它之前检查非nil.例如,SpriteKit的SKNode大量使用隐式解包(部分版本如下)classSKNode:UIResponder,NSCopying,NSCoding{.../**Theparentofthenode.Ifthisisnilthenodehasnotbeenaddedtoanothergroupandisthusthe

ios - Swift:如何声明一个空的命名元组数组?

vartest=[(face:SKNode,body:SKNode)]()不起作用。如何声明一个空的命名元组数组? 最佳答案 你总是可以使用typealiastypealiasMyTupleThing=(face:SKNode,body:SKNode)vartest=[MyTupleThing]() 关于ios-Swift:如何声明一个空的命名元组数组?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

ios - 试图添加一个已经有父错误的 SKNode

我在尝试运行我的游戏时遇到错误:“试图添加一个已经有父节点的SKNode”。如果我在本地将SKSpriteNode添加到函数中,它运行良好。但是当我尝试全局声明它时,我得到了那个错误。解决此错误的任何帮助都会很棒。我认为它与self.bee.removeFromParent()有关,但我无法让它工作。让蜜蜂=SKSpriteNode(imageNamed:"蜜蜂")runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.runBlock(addBee),SKAction.waitForDuration(0.5

ios - 我怎样才能重新启动 SKScene?

我正在创建一个游戏。当游戏结束时,我会显示一个按钮“再玩一次”,理想情况下,它应该只是重新加载场景。varviewSize=currentScene.view?.bounds.sizeletsceneG=Level1(size:viewSize!)currentScene.view?.presentScene(sceneG)但不幸的是,我收到了这个错误:AttempedtoaddaSKNodewhichalreadyhasaparent:因为有些节点已经存在于场景中,无法再次添加。有没有办法在再次呈现场景之前重新加载场景或删除所有节点?谢谢根据要求,这是Level1类:importSp

swift - 无法将类型 'String' 的值转换为预期的参数类型 'SKNode'

最后一行有问题。我该如何解决?问题说“无法将‘字符串’类型的值转换为预期的参数类型‘SKNode’。''这是我的代码:importSpriteKitletBallCategoryName="ball"classGameScene:SKScene{letball=childNodeWithName(BallCategoryName)as!SKSpriteNode 最佳答案 问题您在对象初始化之前使用self。事实上写这个letball=childNodeWithName(BallCategoryName)as!SKSpriteNode

ios - 如何在 Sprite Kit 场景外时删除节点

我试图在离开场景时删除节点,我尝试了这种方法来做到这一点if(CGRectIntersectsRect(node.frame,view.frame)){//Don'tdeleteyournode}else{//Deleteyournodeasitisnotinyourview}但它似乎不起作用任何帮助将不胜感激 最佳答案 从性能的角度来看,这不是最好的方法,但如果您在场景中重写update方法,您将能够编写每帧执行的代码。classGameScene:SKScene{vararrow:SKSpriteNode?overridefun

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