一旦Sprite从父级移除,我会尝试调用一个函数,以便Sprite可以复制并再次进入场景。每次我在当前代码中执行此操作时,它都会在原始Sprite出现之前进行复制从父项中删除导致重复的Sprite。这是我目前的代码:importSpriteKitletplankName="woodPlank"classPlankScene:SKScene{varplankWood:SKSpriteNode?varplankArray:[SKSpriteNode]=[]overridefuncdidMove(toview:SKView){plankWood=childNode(withName:plan
我正在用Swift3和SpriteKit做一个小游戏。我想与我的角色和一个特殊物体发生碰撞,使我的分数增加1,但由于某种原因,当我检测到碰撞时,分数增加了2或3。我正在从父节点中删除我的SpriteKitNode但它似乎不起作用。这是我的代码:funccheckCollisionsObject(){enumerateChildNodes(withName:"objeto"){node,_inletobjeto=nodeas!SKSpriteNodeifobjeto.frame.intersects(self.personaje.frame){objeto.removeFromParen
我有一个非常简单的游戏。这就像使用加速度计的经典迷宫游戏,但用户还可以使用3DTouch更改矩形的大小。玩家的节点是矩形,由于从加速度计获取数据的世界物理学而移动(这里没有什么特别的):motionManager.startAccelerometerUpdates(to:OperationQueue.current!){(data,error)inifletmotionData=data{self.physicsWorld.gravity=CGVector(dx:motionData.acceleration.x*7,dy:motionData.acceleration.y*7)}}和
我正在为一个游戏做一些死亡动画,想寻求一些帮助。我希望我的怪物在一阵烟雾中消失,但在它激活一个穿过他body的斜线效果之前。我有3个要使用的动画:weaponSlash-一条划过怪物的线。看起来你用剑砍了他。smoke-一股慢慢散开的烟雾monsterFalling-怪物后退,受到惊吓我想做的是按以下顺序播放:同时,斜线出现,怪物开始后退上述动画大约0.25秒后,我希望云开始出现当云彩即将结束时(所以可能在1s之后)我希望怪物消失移除烟雾、怪物、剑等,并在地上掉一些硬币我是这样开始的,作为一个有点有效的测试:(暂时忽略上面的时间)//Cancelanycurrentactions,li
当按下屏幕时,使用以下代码创建的球:varn=1funcaddBall(_x:CGFloat){letnumShape=SKShapeNode(circleOfRadius:30)numShape.name="ball"numShape.position=CGPoint(x:x,y:frame.maxY-40)numShape.physicsBody=SKPhysicsBody(circleOfRadius:30)numShape.fillColor=SKColor.whitenumShape.physicsBody?.density=0.1numShape.physicsBody?.
编辑3:嗯,我已经解决了这个问题。似乎在iOS8中,您现在可以从scene.sks文件加载场景。所以在这种情况下,游戏正在加载一个分辨率为1024x768的.sks文件。这就是图像未正确显示的原因。将ViewController更改为在iOS8之前工作(这里有解释:SwiftandSpritekitwon'trunondevicerunningiOS7.1)似乎可以解决问题。感谢所有试图帮助我的人。:D我正在使用最新的Xcodebeta在SpriteKit和Swift中创建游戏(好吧,我正在移植我已经在Obj-C中制作的游戏)。我有一个问题,那就是SpriteKit似乎没有正确渲染我的
呈现View时,我希望在我的images.xcassets中显示名为“Player”(设置)的图像。目前场景只是加载蓝色。不知道为什么,因为即使添加颜色来更改图像颜色也没有任何作用。importSpriteKitclassCharacterScene:SKScene{varCircle=SKSpriteNode(imageNamed:"Player")overridefuncdidMoveToView(view:SKView){backgroundColor=SKColor.blackColor()Circle.size=CGSize(width:40,height:40)Circle
我在我的SpriteKit项目中创建的是由大约160个Sprite节点组成的大型二维平铺背景。但对我来说,这似乎非常低效。将这些节点置于单个父节点下是否会使它们更有效率?我假设不会,在那种情况下,他们是否有一种在运行时将纹理本身组合到单个节点中的方法?我会简单地使用图像编辑器来平铺这些图像,但由于我项目中的其他因素,所述背景的大小会因设备而异。 最佳答案 你可以做什么,在你的加载阶段,创建160个Sprite节点,使你的背景在1个父节点下,然后调用lettexture=scene.view.textureFromNode(paren
这是我的代码: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
我想添加一个矩形,其中一个角是用户第一次触摸的地方,另一个角是用户离开的地方。我还希望在用户拖动手指时显示矩形。overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition1=touch.location(in:self)varx1=position1.xvary1=position1.yfunctouchesEnded(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition2=touch.locatio