草庐IT

Spritekit

全部标签

ios - SpriteKit 物理在 iOS 9 上巨大的 FPS 下降

我在场景中遇到了一个巨大的FPS下降,一些静态SKSpriteNode节点的主体定义为SKPhysicsBodyinit(polygonFrom:CGPath)和一些简单的动态SKSpriteNode节点,其主体由init(rectangleOf:CGSize)定义。动态节点在场景中发射并最终停止,具体取决于物理。每个动态节点都与其他动态节点发生碰撞,也与前面提到的静态节点发生碰撞。游戏以60fps的速度流畅运行,直到屏幕上的动态节点数量达到约30或更多。之后,FPS开始急剧下降到10fps左右。注意1:这个问题在iOS10上不存在,只有iOS9(我没有测试过iOS8,因为我不支持它)

ios - SpriteKit 得分是随机的

我正在使用SpriteKit创建游戏并尝试在碰撞时增加分数。出于某种奇怪的原因,每次分数增加都是随机数,而不仅仅是1。在didBeginContact方法中,我在子弹和外星人之间发生了碰撞。每次碰撞我都希望分数增加1。除了它有自己的想法并且会随机增加1-6之间的数字。我已经完成了每一行代码并尝试添加多次进入游戏,但它不会像我希望的那样增加1。目前我的代码是这样的。在我的头文件中,我为乐谱创建了一个属性:@property(nonatomic)intscore;然后在我的主要游戏场景中,我添加以下内容-(void)setScore:(int)score{_score=score;_sco

ios - 如何在 spriteKit 中以特定角度施加力?

我想在特定角度给我的SKSpriteNode施加力。那么,如何处理我的CGVector在特定角度给予力?我已经搜索过了,但不幸的是没有找到任何好的方法。我想要实现的目标:我的SKSpriteNode向屏幕移动。顶部有按钮,如30、45、60。因此,如果用户按下按钮(即该按钮包含“30”),那么我必须以相同的速度将我的SKSpriteNode移动到30度。如果你们中有人可以帮助我,请帮助我。 最佳答案 首先,您需要将以度为单位的角度乘以pi/180将其转换为弧度CGFloatangleInRadians=angleInDegrees*

ios - SpriteKit SKView 不再在 iOS 9 中的场景之间转换

我们有一个在2013年编写和发布的代码库,但在iOS9中,当presentScene:transition:消息时,应用程序不再在SKScene之间明显转换被发送到我们的SKView。SKScene收到didMoveToView:消息,但场景本身从未显示在屏幕上。这是我们尝试过的:通过Info.plist禁用Metal使用[SKTransitiontransitionWithCIFilter:duration:]而不是预定义的动画调整zPosition切换到常规UIView动画(这使我们的SKNode消失了)确保过渡方法不会被多次调用在SKTransition上将pausesOutgo

ios - 使用 SpriteKit 开发着色器

我读到SpriteKit的一些缺点是如果您使用它就无法开发着色器。但是,我在SO上阅读了一篇帖子,提出了不同的建议:Howtoapplyfull-screenSKEffectNodeforpost-processinginSpriteKit如果您决定使用SpriteKit,是否可以开发自己的着色器?谢谢 最佳答案 它在iOS7中不受支持,但iOS8将支持自定义着色器。有关详细信息,请查看pre-releasedocumentation的SKShader。AnSKShaderobjectholdsacustomOpenGLESfrag

ios - 构建塔防游戏。如何在 SpriteKit 的 tile Node 上添加带有塔选项的圆形菜单?

我正在使用SpriteKit构建一款塔防游戏,我对此还比较陌生。我的map基本上由可触摸的图block节点组成。一旦用户触摸节点,我就可以在该节点上放置一个塔(到目前为止我已经完成了这部分工作)。我想做的是,不是直接放置塔,而是想在图block节点周围弹出一个圆形菜单,让用户选择他们希望放置在该图block节点中的塔。如果用户单击圆形菜单以外的任何地方,菜单应该消失。所以像这样:http://imgur.com/QvCsM8Q我想知道最好的方法是什么。我有两种可能的解决方案,但它们看起来很老套:1)创建一个由菜单和4个按钮组成的自定义UIView,然后将其添加到我的场景中(但是我如何从

ios - 在 SpriteKit 中重置场景

我有两个不同的ViewController,第一个是SKScene。在那里我们找到了游戏本身,在第二个中我们找到了带有“重播”按钮的分数。游戏结束后,我删除了场景,并在用户单击“重播”时再次alloc和init。我的问题是,如果某个SKSpriteNode在游戏结束时被旋转,在删除并重置它之后,当我回到那个场景时,它仍然以与删除场景之前完全相同的角度旋转。-initWithSize被正确调用,所以我不确定为什么会这样。我的问题是是否有一种方法可以重置SKScene以使其与第一次玩游戏时相同。谢谢! 最佳答案 是的,首先创建一个创建场

ios - 如何在 Spritekit 中创建一个计时器?

我已经想出如何在单View应用程序中制作计时器,但不是Spritekit。当我使用以下代码时,出现2个错误(如下所列)。谁能帮我解决这个问题?谢谢,jack。计时器。if(!_scorelabel){_scorelabel=[SKLabelNodelabelNodeWithFontNamed:@"Courier-Bold"];_scorelabel.fontSize=200;_scorelabel.position=CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));_scorelabel.fontColor

ios - 将简单的动画 GIF 添加到 iOS Spritekit 游戏?

我是一名初级程序员,正在使用iOSsprite-kit创建游戏。我有一个保存为.gif文件的简单动画GIF(30帧)。有没有一种简单的方法(几行代码可能类似于通过UIImage添加常规.png)在我的游戏中显示此GIF?我做了一些关于在Xcode中显示动画GIF的研究,其中大部分涉及导入大量类,其中大部分是我认为不需要的东西(我几乎没有足够的知识来筛选它)。 最佳答案 我认为gif就像动画Sprite一样。所以我要做的是将gif作为纹理添加到for循环中的SKSpriteNode中,然后使用SKAction.repeatAction

ios - 如何防止两种类型的 SpriteKit 节点相互碰撞?

我正在使用AppleSpriteKit编写一个小游戏。我遇到了碰撞问题。有时我不想让两个skSpriteNodes与physicsBodys交互。例如,我有HERO、ENEMYS和SHOTS,我希望SHOTS只与ENEMYS交互。但是当两发子弹碰撞在一起时,它们会改变位置!镜头的代码是shot.physicsBody=[SKPhysicsBodybodyWithRectangleOfSize:shot.size];shot.physicsBody.dynamic=YES;shot.physicsBody.allowsRotation=FALSE;shot.physicsBody.cat