我在从pixelData创建SKSpriteNode时遇到问题。下面是我的代码。varpixelData:[UInt32]=[UInt32](count:256,repeatedValue:0xff0000ff)pixelData.appendContentsOf([UInt32](count:256,repeatedValue:0xff00ff00))pixelData.appendContentsOf([UInt32](count:256,repeatedValue:0xffff0000))pixelData.appendContentsOf([UInt32](count:256,
我在场景编辑器中设置我的SKSpriteNode的用户数据:然后我尝试获取它,使用:letsprite:SKSpriteNode=self.childNode(withName:"sprite")as?SKSpriteNodeletnumero:Int=sprite.userdata?.valueForKey("numero")as!Int但我得到了nil值:“fatalerror:在展开可选值时意外发现nil”我还尝试使用以下方法初始化userData:sprite.userData?=NSMutableDictionary()但同样的结果... 最佳答案
一旦Sprite从父级移除,我会尝试调用一个函数,以便Sprite可以复制并再次进入场景。每次我在当前代码中执行此操作时,它都会在原始Sprite出现之前进行复制从父项中删除导致重复的Sprite。这是我目前的代码:importSpriteKitletplankName="woodPlank"classPlankScene:SKScene{varplankWood:SKSpriteNode?varplankArray:[SKSpriteNode]=[]overridefuncdidMove(toview:SKView){plankWood=childNode(withName:plan
在我的游戏中,您点击屏幕上的任意位置,子弹就会朝那个方向飞去。唯一的问题是您可以尽可能快地拍摄。有什么办法可以在每次拍摄后增加延迟。所以我想开枪,等1秒再开枪。这是我在touchesEnded中的代码:overridefunctouchesEnded(_touches:Set,withevent:UIEvent?){guardlettouch=touches.firstelse{return}lettouchLocation=touch.location(in:self)//Setupinitiallocationofbulletandpropertiesletbullet=SKSpr
我正在用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)}}和
我可以在SpriteKit场景中添加手势。但无法向我在场景中的节点之一添加手势。此外,touchesBegan方法在WatchKit中不可用。所以在我的界面中添加了gestureRecognizer并将其传递到SpriteKit场景中。但这导致将panGesture添加到整个场景而不是我的节点。有没有办法只将手势添加到我的一个节点? 最佳答案 您永远不会向节点添加手势。您只能向任何可以识别手势的东西添加手势。在UIKit中,这些是UIView在Watchkit中,这些是WKInterfaces现在你想在Watchkit中做的是,当手
我正在尝试使用键盘让飞船在屏幕上移动。我设法处理了按键事件,但我注意到当同时按下多个按键时,它不会正确运行,只有一个具有优先权。我正在使用switch语句,因为我认为keyDown函数为每个键调用一次,但即使我在中显式添加fallthrough这些情况并没有更好。有没有人经历过类似的事情,有没有更好的方法将键盘用作Controller?overridefunckeyDown(withevent:NSEvent){switchevent.keyCode{case0x31:ifletplayerShip=self.playerShip{playerShip.run(SKAction.ini
我收到这个错误代码错误:Playground执行中止:错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。进程一直停留在中断点,使用"threadreturn-x"返回到表达式求值前的状态。这是我的代码:importCocoaimportSpriteKitimportPlaygroundSupportpublicclassScene:SKScene{varpoint=CGPoint(x:0,y:0)letviewFrame=CGRect(x:0,y:0,width:1080,height:1080)overrideini
我正在为一个游戏做一些死亡动画,想寻求一些帮助。我希望我的怪物在一阵烟雾中消失,但在它激活一个穿过他body的斜线效果之前。我有3个要使用的动画:weaponSlash-一条划过怪物的线。看起来你用剑砍了他。smoke-一股慢慢散开的烟雾monsterFalling-怪物后退,受到惊吓我想做的是按以下顺序播放:同时,斜线出现,怪物开始后退上述动画大约0.25秒后,我希望云开始出现当云彩即将结束时(所以可能在1s之后)我希望怪物消失移除烟雾、怪物、剑等,并在地上掉一些硬币我是这样开始的,作为一个有点有效的测试:(暂时忽略上面的时间)//Cancelanycurrentactions,li