草庐IT

Sprite-Kit

全部标签

ios - 在 SpriteKit 场景背景周围夹紧相机

所以我有一个基本的游戏设置,可以在下面的bitbucket链接中找到:Gamelink我目前很难理解如何根据场景布局平移相机节点。目标是让相机跟随玩家,直到到达由场景大小定义的角边界。在这个特定的测试场景设置中,场景大小为1000x1000,相机比例为1。下面的代码用于在设置新位置跟随角色时修改相机的位置:varcameraPosition:CGPoint{get{returnCGPoint(x:camera!.position.x,y:camera!.position.y)}set{letcameraScale=CGFloat(1)letsceneScale=CGFloat(1)//

ios - 我如何在 GameplayKit/SpriteKit 中以有效的方式对实体和组件进行建模

从这里的GameplayKit开始,我正在为一个无尽的奔跑者建模,玩家可以通过点击屏幕在角色之间切换。角色第一次可以近距离攻击(组件),第二次跳跃(组件),第三次射击(组件)。我想知道什么是最好的建模在这两者之间的方法:创建一个具有3个不同角色实体(数组)的Player类,其中一个具有它的组件创建一个具有3个不同角色组件的实体Player并添加所有移动和Action组件(射击/跳跃...)这是一个真正的大项目,所以我担心如何最好的方法来保持代码在很长的生命周期内可维护和可读.注:。SpriteComponent将是所有实体在.sks上负责视觉表示的组件。附言2:。如果可能的话,用swi

ios - 当我在层次结构中添加额外的 SKNode 子级时,SKCropNode 失败

更新:iOS10似乎已经解决了这个问题。我升级到Swift3和Xcode8,一切都按预期工作。我现在已经遇到过几次这个问题,我不知道这是SKCropNode中的错误还是我只是误用了它。也许我缺少一些文档来解释为什么会这样?我有一个100x100矩形形状的裁剪节点作为mask。如果我在其中放置一个蓝色圆圈,它就会被正确裁剪。//Createacropenodewithasmallsquare.letcropNode=SKCropNode()letcropNodeMask=SKShapeNode(rect:CGRect(x:0,y:0,width:100,height:100))cropN

swift - 在 removefromParent 之后从场景中移除时让 Sprite 发出消息?

在Swift中有什么方法可以告诉我什么时候SKSpriteNode实际上已经从场景中移除了吗?我不认为它实际上是在调用removeFromParent时完成的,但我认为它是稍后完成的,当Sprite-Kit认为这样做很方便时。我试图了解完整的生命周期,我注意到即使在该Sprite已被删除之后,Sprite仍然可以参与didBeginContact中的接触和碰撞。如果我打印出children的内容(即包含场景中所有子项的数组),我会看到Sprite在removeFromParent调用后立即被删除,但Sprite仍然可用(至少,对于这次SK游戏循环的执行)。编辑:这个问题来self之前关

swift - Sprite Kit - 有时球会从屏幕上消失?

我是sprite套件的新手。我试过与2名玩家一起玩简单的球弹跳游戏,另一名玩家正在缓慢地跟踪球。但是我发现了一个问题。当我将线移动到球(带边缘)时,球从屏幕上消失了。另一次没问题,球弹跳。有什么问题?我有一个GameScene、sks和ViewController。我的Sprite节点来自sks。如果有人解释这种情况。会更好。我在下面附上了我所做的。我的游戏场景:classGameScene:SKScene{varball=SKSpriteNode()varenemy=SKSpriteNode()varmain=SKSpriteNode()overridefuncdidMove(tov

ios - 关闭 SKScene 回到 UIKit 菜单

一旦我的SpriteKit游戏结束,我想回到我的UIKitMenuViewController。根据我目前了解到的情况,使用protocol/delegate是最好的(?)选项,但我无法让它发挥作用。我知道该协议(protocol)可能会高于GameViewController的类声明,看起来像这样:protocolGameViewControllerDelegate{vargameOver:Bool?}但我需要帮助从GameScene访问它并让它关闭GameViewController。以下是应用程序的骨架,以防有帮助。菜单ViewControllerclassMenuViewCon

ios - 检测旋转何时完成并移动到新场景

我正在尝试在轮子停止旋转时移动到另一个场景。我的代码如下所示。我不知道如何检测速度何时达到0.0?importSpriteKitimportGameplayKitclassGameplayScene:SKScene{varplayer:Player?;overridefuncdidMove(toview:SKView){player=self.childNode(withName:"spinner")as!Player?;}overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letloc

ios - SpriteKit,把一个进程放在另一个核心上?

想象一下classNattyScene:SKScene{您可能有一个自定义的节点字段,或者每帧都会发生的其他事情。现在想象你有一些计算,一个很好的例子可能是重心......varglobalCOG:CGPointfuncupdateCOG(){..say,getallthe.positionofallSpaceship..globalCOG=..somepoint}假设像这样的问题,把它放在另一个线程上会很有意义读取位置是线程安全的/快速的另一个核心上的另一个假定线程,了解SpriteKit帧(这样您就可以以通常的方式计算直到放弃时间,等等,也许您可​​能更喜欢跳过帧或其他任何东西-线

xcode - SpriteKit unarchiveFromFile 不会从 Assets 目录和图集中加载纹理

我对SpriteKit还是个新手,想看看我是否可以使用Xcode的SKS编辑器构建关卡。当我添加几个带有“Spaceship.png”纹理的Sprite并构建模板应用程序时,纹理不会加载。这是使用Swift作为语言并添加提供的“Spaceship.png”Sprite的原始OSX游戏模板的屏幕截图。纹理显示良好:这是仅对模板进行修改后构建和运行应用程序的结果:调试控制台显示此警告消息:我尝试添加一个.atlas文件夹,结果相同。场景只显示红色X图标代替Sprite。如果添加的Sprite只是彩色Sprite,它们显示良好。前段时间我废弃了一个应用程序,我曾经在其中加载SKScene并将

ios - 如何用SKKeyframeSequence绘制渐变 : as per Apple docs

SKKeyframeSequence上的Apple文档具有旨在创建渐变的简短示例代码:letcolorSequence=SKKeyframeSequence(keyframeValues:[SKColor.green,SKColor.yellow,SKColor.red,SKColor.blue],times:[0,0.25,0.5,1])colorSequence.interpolationMode=.linearstride(from:0,to:1,by:0.001).forEach{letcolor=colorSequence.sample(atTime:CGFloat($0))