Tag: 精灵套件

通话过程中暂停游戏,打电话和按回家键之间的区别?

当主页button被按下时,我的游戏暂停。 但是,当我接到电话时,它不会。 当游戏激活时,它的行动将会恢复。 打电话和按下HB,我没有区别。 请帮我一下 谢谢。 func pauseGame(){ initResumeButton() pause.removeFromParent() gamePaused = true self.paused = true } func resumeGame(){ resume.removeFromParent() initPauseButton() gamePaused = false self.paused = false } func registerAppTransitionObservers(){ NSNotificationCenter.defaultCenter().addObserver(self, selector: "applicationWillResignActive", name: UIApplicationWillResignActiveNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: "applicationDidEnterBackground", name: UIApplicationDidEnterBackgroundNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: "applicationWillEnterForeground", name: UIApplicationWillEnterForegroundNotification, object: nil) } func applicationWillResignActive(){ if […]

重新启动Sprite – Kit Game Swift

我用SpriteKit创build了一个简单的2D街机游戏,我正在尝试添加一个评分系统。基本上这个游戏是一个方形的精灵,它必须跳过各种障碍。 所以我想要的是当玩家联系整个游戏的对象重新启动。 游戏检测到的联系(我之前testing过),但当我删除所有的孩子,然后运行我的游戏的基本主要function,我注意到,旧对象保持产卵和彼此混乱。 func didBegin(_ contact: SKPhysicsContact) { if (contact.bodyA.categoryBitMask == PhysicsCategory.Player && contact.bodyB.categoryBitMask == PhysicsCategory.Obstacles ) { //case where PLAYER collides with OBSTACLE print("I detect Contact") Scorelabel.text = "0" scoreCounter = 0 self.removeAllActions() self.removeAllChildren() self.setupGame() } // didBeging func然后继续其他情况 `

暂停SpriteKit游戏 – UIApplicationWillResignActive与UIApplicationDidBecomeActive?

我理解这两种方法之间的区别,但是我想知道是否在使用UIApplicationWillResignActive(而不是UIApplicationDidBecomeActive(或UIApplicationDidEnterBackground))时会有缺点,例如暂停SpriteKit游戏。 我一直在网站上的线程漫游,并注意到,通常回答问题如何暂停一个SpriteKit游戏,UIApplicationDidBecomeActive和UIApplicationDidEnterBackgroundbuild议,而不是UIApplicationWillResignActive。 由于UIApplicationWillResignActive也会因为Siri / Calls而暂停游戏,所以在处理暂停SpriteKit游戏时使用这种方法不是最好的方法,还是使用它有一些缺点? 下面我有我的通知和暂停function: NotificationCenter.default.addObserver(self, selector: #selector(self.pauseGame), name:NSNotification.Name.UIApplicationDidBecomeActive, object: nil) //OR NotificationCenter.default.addObserver(self, selector: #selector(self.pauseGame), name:NSNotification.Name.UIApplicationWillResignActive, object: nil) 暂停function: func pauseGame(){ print(self.scene?.isPaused) if sceneIsPaused == true || isGameOver == true{ return } leftMobGenTimer.invalidate() rightMobGenTimer.invalidate() genDragonTimer.invalidate() checkNinjaTimer.invalidate() chiStrikeTimer.invalidate() randCoinTimer.invalidate() print("Timer stopped?") if soundEnabled == true{ player.pause() } self.scene?.isPaused = true sceneIsPaused = true makePauseView() }

如何将.sks文件添加到现有的Swift / Sprite-Kit项目?

我开始关注Ray Wenderlich的“太空入侵者”教程,但是分歧很大。 我现在有3个SKScenes – 我的标题屏幕,我的主要游戏屏幕和我的结束水平/游戏在屏幕上。 我添加的标题屏幕和结束游戏场景,这些都有.sks文件; 主游戏屏幕不会显示所有元素(SKSpriteNodes等)。 我的程序stream程如下: 我现在真的想通过场景编辑器放置主游戏屏幕的一些事件,所以我为它创build了一个.sks文件,并试图改变我的titleScene.swift,如下所示: 从: let gameScene = GameScene(size:CGSize(width: 1536, height: 2048)) 至: let gameScene = SKScene(fileNamed: "GameScene.sks") as! GameScene! 但是,这会给出: 我试图删除required init(coder aDecoder: NSCoder)但Xcode然后抱怨说 所需的init(编码器:必须由SKScene的子类提供 然而我的titleScene和gameOverScene也是gameOverScene的子类,他们没有init(coder 🙂 我真的不能看到我在做什么显示我的titleScreen和我的gameOverScene通过(fileNames :)和他们的.sks文件,并尝试做我的gameScene相同的区别。

SpriteKit – 使某些SpriteNodes不会相互碰撞而不禁用它们的物理实体

我有4个SpriteNodes在屏幕上,我想不会互相反弹,而是stream过对方,同时保持与某些SpriteNodes和屏幕的框架的碰撞。 我已经宣布了所有的类别: let BCategory : UInt32 = 0x1 << 0 let B2Category : UInt32 = 0x1 << 1 let B3Category : UInt32 = 0x1 << 2 let B4Category : UInt32 = 0x1 << 3 let BotCategory : UInt32 = 0x1 << 4 let PadCategory : UInt32 = 0x1 << 5 let WallCategory : UInt32 = […]

添加SKScene到UIViewController?

我刚刚在界面生成器中创build了一个新的UIViewController 。 它是从UITableViewController (单元格)segued。 我现在想在这个UIViewController里面使用SKScene 。 这是如何完成的? 而对于一个侧面说明… 如果SKScene占用了整个UIViewController.view ,那么你可以在场景上覆盖UIKit对象吗? 或者更好的是在UIViewController.view创build一个单独的UIView来保存SKScene ,然后围绕这个单独的UIView布局UIKit对象,并让默认的UIViewController.view作为所有这些元素的容器? 如果采取这种方法,理论上可以通过SKScene访问这些UIKit对象吗?

如何在sks文件中的“Xcode动作编辑器”获取所有的动作名称“SpriteKit动作”

我有一个SpriteKit动作文件,里面有一些动作。 要使用一个动作,我使用: let action = SKAction(named: "Shake") 相反 ,可以直接使用MyActions.sks文件中的名称? 就像是: let actions = SKScene(fileNamed: "MyActions.sks")` let shakeAction = actions.listOfAction.Shake //this is my guess 如果我打印场景文件: let actions = SKScene(fileNamed: "MyActions.sks") print(actions) 输出是: Optional({ "_info" = { "_previewScenePath" = "PippiPompiere/GameScene.sks"; }; actions = { PlayerIdle1 = "<SKGroup: 0x79e60ec0>"; PlayerMoveToHouse0 = "<SKGroup: 0x7b1ea010>"; PlayerMoveToHouse1 = "<SKGroup: 0x7b052cd0>"; PlayerMoveToHouse2 […]

SpriteKit和UIKit兼容性:迁移到Swift 2时出现OpenGL错误?

我只是不明白自从我迁移到Swift 2以来发生了什么。我有一个选项卡式应用程序,我得到这个错误: <CAEAGLLayer: 0x7fb2e053fb40>: calling -display has no effect. Assertion failed: (length + offset <= _length), function commit_data, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/Jet_Sim/Jet-1.50/Jet/jet_types_OpenGL.h, line 863. 我知道这是非常含糊的,但我不知道从哪里开始寻找错误。 谢谢。 编辑:我刚刚意识到这可能与我试图将一个GameViewControllerembeddedTabbedController的事实有关。 不过,在iOS 9.0之前并没有造成任何错误。 任何线索?

当运行一个动作时,Sprite Kit会崩溃,或者仅在iPad Air和iPad mini上加载video

我收到来自Retina mini和iPad Air设备的崩溃报告,但不是iPhone 5S。 它出现在SpriteKit中,当有人点击一个应该在屏幕上显示另一个的精灵时。 我不能在非A7设备上重现这一点,所以想知道是否有人可以看看下面的崩溃日志,让我知道崩溃可能是由什么造成的? Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0xb000000c Crashed Thread: 0 Thread 0 Crashed: 0 libobjc.A.dylib 0x39b30b66 objc_msgSend + 5 1 CoreUI 0x3349bd0d -[CUIStructuredThemeStore renditionWithKey:] + 1050 2 CoreUI 0x334a50af -[CUINamedImage _renditionForSpecificKey:] + 168 3 CoreUI 0x334a50fd -[CUINamedImage image] + 18 4 UIKit 0x31b2ec01 -[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:] + 260 5 […]

Swift SpriteKit – 逐渐增加旋转

我正在用@ nickfalk回答如何在Sprite工具箱中使用 Swift 快速旋转精灵,以及如何在精灵工具箱中旋转精灵。 我怎么调整这个以逐渐增加旋转速度到最大值,然后当点击屏幕时,它会逐渐减速并在相反的方向上进行X个时间量? 谢谢! 托比。