草庐IT

Sprite-Kit

全部标签

ios - 以随机时间间隔定期将节点添加到场景中

简单来说,我正在尝试弄清楚如何在一段时间内向我的场景添加10个节点,每个节点由一些随机时间间隔分隔。例如:Loop10times:A.CreateandaddnodetosceneB.Waitsomerandomamountoftime,1-5secondsC.BacktoA最好也知道它何时完成运行,当最后一个节点添加到场景时有一个bool值只是翻转,但这需要知道最后一个节点何时完成添加。我不太确定如何完成此操作。我阅读了一些关于dispatch_after的内容,但这并不能解决我在添加节点之间的随机时间问题。 最佳答案 在Spri

swift - 在 SKScene swift 中获取点的颜色

我需要在Swift中为我的游戏获取像素/点的颜色。所以我试图找到一个输入CGPoint并返回Color的函数,到目前为止我发现的所有内容都只返回(0,0,0,0)。我认为这是因为我在我的游戏场景类(它是一个SKScene)中这样做,并且场景仅由ViewController加载。任何解决方案?(如果有更好的方法来检查sprite是否接触到同样有效的颜色)提前致谢。 最佳答案 添加以下方法:extensionUIView{funcgetColor(atpoint:CGPoint)->UIColor{letpixel=UnsafeMuta

ios - 如何防止在暂停场景(取消暂停后)上运行 SKAction,节点纹理在暂停/取消暂停场景后不会改变

我有两个关于暂停和取消暂停场景的问题。我有按钮:playPause=SKSpriteNode(imageNamed:"buttPause.png")playPause.name="pause"playPause.setScale(0.65)playPause.position=CGPoint(x:-self.frame.width/2.55,y:self.frame.height/2.27)playPause.zPosition=10self.addChild(playPause)我已经设置了暂停和取消暂停场景的功能+改变按钮的纹理:funcbuttonpauseplayTouched

swift - 使用粒子效果或动画 sks 文件创建填充字母

我有一颗星星的.png图片。我想用这张图片制作充满星星的动画字母。这就是我想做的(但是星星会在其中有点动画,我想这可以用粒子效果来完成):我可以通过为每个字母使用可能的多个sks文件然后将它们加载到一个更大的场景中来做到这一点吗?另外,如果我只想用几颗星星的静态纹理填充标签节点,有没有其他方法可以做到这一点? 最佳答案 不理想,但很容易实现:overridefuncdidMove(toview:SKView){ifletnodeToMask=SKEmitterNode(fileNamed:"firelfies"){backgroun

ios - SKPhysicsBody 质量变化中心

我目前正在开发一款游戏,其中我有一张圆柱形物体的图片,我用以下内容制作了一个SKPhysicsBody:self.oval.node.physicsBody=SKPhysicsBody(texture:self.oval.node.texture,size:self.oval.node.size)此方法在节点周围创建了一个漂亮的形状,但是,重心偏离了......它在椭圆的尖端保持平衡。无论如何要改变它以平衡理论上最重的部分应该在哪里?谢谢! 最佳答案 质心不能偏离太远,它是准确的。问题是您希望您的物理体具有不均匀的密度。刚性物理体的

swift - Core Image NSException 崩溃,为什么/什么?

在SpriteKit中,我使用Effect节点将简单的渐变应用于简单的矩形。这似乎工作正常,但是将它添加到场景会导致NSException。请问:我做错了什么?importSpriteKitimportGameplayKitimportCoreImageclassGameScene:SKScene{overridefuncdidMove(toview:SKView){letrectangle=SKSpriteNode(color:.black,size:CGSize(width:480,height:80))letgradientOne=CIFilter(name:"CILinearG

swift - 在swift 3和core graphics中画一条直线

我正在尝试使用核心图形和swift3绘制一条直线但是,当调用touchesmoved时,它会创建多条线,而不仅仅是一条线。使用的代码如下:importUIKitclassViewController:UIViewController{@IBOutletweakvardrawingPlace:UIImageView!varstartTouch:CGPoint?varsecondTouch:CGPoint?overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){lettouch=touches.firststartTouch=to

ios - 如何使用 - swift - SpriteKit 编写将在特定时间运行函数的协议(protocol)

是否可以创建这样的协议(protocol):protocolSetupProt{funcsetup()}然后在我的didMove函数结束时,告诉应用程序运行所有实现此协议(protocol)的子类的所有设置函数?或者我是否需要存储对实现协议(protocol)的所有这些对象的引用并遍历它们?目前我正在使用该协议(protocol)。然后我有一个像这样的全局数组:setups=[SetupProt]=[]我的游戏中有“平台”的子类。我在XCODE编辑器中对其进行子类化。在aDecoderinit函数中,我将该节点添加到这个全局数组中...我这样做是因为此时场景属性为nil,所以我还不能访

ios - 如何优化以获得更好的帧率?

这是一款益智游戏。从屏幕截图中可以看出,屏幕上有256个节点,帧率徘徊在10FPS左右。我看到很多益智游戏,我认为屏幕上有数百个独立的节点,但帧速率很高……我也想达到同样的效果。根据我的代码,我可以考虑哪些优化点?(下图代码)我实际上只是在创建一堆SKShapeNode,将它们放入NSArray,然后将它们作为子节点添加到didMoveToView上的场景classGameScene:SKScene{vargrid:Grid!=niloverridefuncdidMoveToView(view:SKView){self.grid=Grid()self.grid.initWithPare

swift - 5 秒后删除 SKSpriteNode

如何在我的函数中像这样在5秒后删除我的SKSpriteNode。我尝试使用一个名为func的NSTimer删除我的BonusSprite但5秒后我的应用程序崩溃了:lettimerApparitionBonus=NSTimer.scheduledTimerWithTimeInterval(13,target:self,selector:Selector("ApparitionBonus"),userInfo:nil,repeats:true)}funcApparitionBonus(){varBonusApparitionX=UInt32(self.frame.size.width)v