草庐IT

Sprite-Kit

全部标签

ios - 如何创建 overlaySKScene SWIFT Xcode 来显示 HUD 或控件?

我有一个使用SceneKit设置的场景。这是一款使用SceneKit的游戏。我正在尝试制作一个HUD,因此我可以使用SpriteKit将控件放在屏幕上。问题是我不太了解所有代码,而且我不知道我缺少什么。你能正确重写吗?我尝试在名为base的屏幕上添加一个Sprite图像,但我不确定在转换SpriteKitoverlaySKScene后这是否是添加子画面的方式?代码:importiAdimportUIKitimportGameKitimportSceneKitimportStoreKitimportSpriteKitimportQuartzCoreimportFoundationimpo

ios - 创建一个在圆外旋转的对象

我试图创建一个在圆外旋转的对象,但它在圆内旋转。这就是我想要做的(我的角色):funcmoveClockWise(){vardx=Character.position.x-self.frame.width/2vardy=Character.position.y-self.frame.height/2varrad=atan2(dy,dx)Path=UIBezierPath(arcCenter:CGPoint(x:self.frame.width/2,y:self.frame.height/2),radius:150,startAngle:rad,endAngle:rad+CGFloat(

ios - Sprite 出现在模拟器中,而不是设备上

这个简单的项目会在您按下按钮时在field中央插入一个方形Sprite,这会调用下面的add()函数。在模拟器中,当你添加多个Sprite时,它会将其他Sprite推开,所以当你多次按下它时,你会得到......screenshotfromsimulator,iphone6,iOS9.2,这就是我想要的行为。但是在我的iPhone上运行相同的代码,在添加相同数量的sprite后会产生这个...screenshowfromphysicaliphone6,iOS9.2这是来自GameScene.swift的代码:importSpriteKitclassGameScene:SKScene{o

swift - 检测 SKNode 和粒子之间的碰撞?

我有这个函数可以创建一些熔岩:funcsetupLava(){letemitter=SKEmitterNode(fileNamed:"Lava.sks")!emitter.particlePositionRange=CGVector(dx:200,dy:0.0)emitter.advanceSimulationTime(3.0)emitter.zPosition=4emitter.position=CGPoint(x:self.frame.width/2,y:300)lava.addChild(emitter)}我想检测玩家何时与其发生碰撞。我该怎么做? 最

ios - 预加载 Sprite 套件纹理

所以我正在阅读有关最佳sprite工具包实践的apple文档。我遇到了这个:例如,如果您的游戏在其所有游戏玩法中使用相同的纹理,您可以创建一个在启动时运行一次的特殊加载类。您执行一次加载纹理的工作,然后将它们留在内存中。如果场景对象被删除并重新创建以重新开始游戏,则不需要重新加载纹理。这将显着提高我的应用程序的性能。有人可以指出正确的方向,告诉我如何实现这一目标吗?我假设我会调用一个函数来在我的ViewController中加载纹理?然后访问该纹理图集? 最佳答案 问题是,你真的想像那样缓存资源吗?不能说我曾经发现需要那种性质的东西

swift - 有没有办法暂停具有特定 zPosition 及以下的所有 Sprite ?

我正试图暂停我游戏中的许多Sprite。有没有一种方法可以暂停具有给定zPosition的Sprite或低于给定zPosition的所有Sprite?这些Sprite也可能在更新方法中更新物理体。 最佳答案 您可以使用如下示例中的代码来完成此任务:self.enumerateChildNodes(withName:"//*"){node,stopinifnode.zPosition>1&&node.zPosition您还可以决定在第一行中使用特定的“名称”而不是“*”来仅对具有此名称的节点进行分组。

swift - self.addChild 是做什么的?

这是一个愚蠢的问题,但是函数self.addChild()做了什么?我很熟悉这个函数,也很熟悉如何使用它,但我不确定它把child添加到什么地方。例如,我创建并设计了一个名为spinnyNode的SKShapeNode。然后我调用函数:functouchDown(atPointpos:CGPoint){ifletn=self.spinnyNode?.copy()as!SKShapeNode?{n.position=posn.strokeColor=SKColor.blackself.addChild(n)}在这种情况下,parent是什么?是创建节点的View吗?非常感谢您抽出时间回答

swift - 如何使语句仅适用于 Sprite Kit 中的选定级别

所以这里我有这段代码ifcollision==PhysicsCategory.Cat|PhysicsCategory.Bed{print("SUCCESS")win()ifcurrentLevel基本上,此声明适用于我拥有的每个级别。我只想在一个级别上这样做ifcollision==PhysicsCategory.Cat|PhysicsCategory.Bed|PhysicsCategory.Bottle{print("SUCCESS")win()ifcurrentLevel但是如果我要使用它就意味着在每个关卡中都需要与瓶子碰撞,但是我只想在一个关卡中使用它我用的是swift谢谢!为@

swift 3 (SpriteKit) : Aligning SKPhysicsBody to SKShapeNode

我在我的程序中使用这个创建SKShapeNodes:letpoints=[CGPoint(x:x,y:y),CGPoint(x:x2,y:y2)]letline=SKShapeNode(points:&points,count:points.count)我遇到的问题是,每当我向线上添加一个physicsBody时,physicsBody都没有与该线对齐。我意识到这个问题是因为线的位置总是CGPoint(x:0,y:0)所以physicsBody总是在屏幕的中心,不管线在哪里。这是我创建physicsBody的代码:line.physicsBody=SKPhysicsBody(recta

swift - 在 SKScene 上叠加 SKScene

是的,我知道你在想什么......但这不是重复......我有2个场景,gameScene和menuScene。我想将menuScene覆盖在gameScene上。我知道你不能一次呈现2个场景,我查看了解决方案,他们都建议将menuScene设置为SKNode而不是SKScene。问题是我需要将menuScene设为SKScene,因为我使用的是SKCameraNode(在SKNode中不可用)...有什么建议吗?提前致谢。 最佳答案 相信我,你做不到。针对这些情况,您应该采取的方法是考虑层次结构和角色(参见下图)那么,如果您现在有