Tag: 精灵套件

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

更新:看起来像iOS 10已经解决了这个问题。 我升级到Swift 3和Xcode 8,一切都按预期工作。 我已经遇到了这个问题几次了,我不知道这是否是在SKCropNode的错误,或者如果我只是滥用它。 也许有一些文件我错过了解释为什么会发生这种情况? 我有一个具有100×100矩形形状的裁剪节点作为蒙版。 如果我在里面放置一个蓝色圆圈,它会被正确裁剪。 // Create a crope node with a small square. let cropNode = SKCropNode() let cropNodeMask = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 100, height: 100)) cropNodeMask.fillColor = UIColor.whiteColor() cropNode.maskNode = cropNodeMask self.addChild(cropNode) // Create a blue circle and put it in the crop node. let blueCircle […]

在使用SKShapeNode的Xcode 6 Beta 4中不起作用

在Xcode 6testing版2中工作正常,但在testing版4中,它不再工作。 有谁知道背后的秘密是什么? let circle = SKShapeNode(circleOfRadius: 125); circle.strokeColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0); circle.lineWidth = 4 self.addChild(circle); 在testing版4中,什么也看不到。 感谢您的帮助提前。

游戏中心与Sprite Kit整合?

我如何使用Game Center或GameKit框架与Sprite Kit Xcode模板? 在Sprite套件中,它使用场景; 但通常查看排行榜,例如你需要“presentModalViewController”,但在SKView中是不可能的。 我怎样才能在iOS 6中authentication玩家和所有其他有趣的东西。 提前致谢!

雪碧套件:大量的精灵(1000 +)位Blitting

我试图创build一个SpriteKit有几千个精灵(〜500 – 2000)的场景。 每个精灵只是一个白色的像素1×1 – 没有必要甚至使用他们的纹理。 直接把这个精灵加在一起是不可能的(或者至less我是这么认为的)。 在iPhone 6上,我添加了大约200个精灵,然后由于内存的原因系统结束了添加过程,其余的精灵都没有添加。 我已经find了一个聪明的解决scheme,称为比特Blitting ,其中所有的精灵都添加到一个节点,然后“转换”到textureFromNode:方法的纹理,然后从这个纹理创build一个精灵,最终将被添加到一个屏幕。 它工作的很好,我可以一次创造超过10000个精灵,并具有很高的fps。 我的问题是我以后不能移动这些精灵(=改变位置)。 无论我做什么,纹理总是保持不变。 我错过了什么? 我的代码: override func didMoveToView(view: SKView) { self.generateRandomSprites() } func generateRandomSprites() { let texture = SKTexture(imageNamed: "whitePixel") self.canvasNode = SKNode() log("started generating all sprites") for var i = 0;i < 1000;i++ { let width = self.scene!.frame.size.width let height = self.scene!.frame.size.height let […]

Swift显示游戏中心排行榜

现在我正在努力使我创build的排行榜显示出来。 玩家authentication很好,但是当游戏中心窗口打开时很奇怪。 这是一张图片: 这里是我用来显示这个图像的代码: override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { self.showLeaderboard() } func showLeaderboard() { var leaderView = UIViewController() var leaderViewController = GKGameCenterViewController(rootViewController: leaderView) leaderViewController.viewState = GKGameCenterViewControllerState.Leaderboards leaderViewController.leaderboardIdentifier = "High_Score_Board" self.showViewController(leaderViewController, sender: self) //self.presentViewController(leaderViewController, animated: true, completion: nil) } func leaderboardViewControllerDidFinish(controller: GKGameCenterViewController){ controller.dismissViewControllerAnimated(true, completion: nil) } 所有这一切都在我的GameViewController。 此外,即使这个工程,我将如何访问我的SKScenes这个方法? 谢谢您的帮助!

如何在Sprite Kit中实现鼠标连接?

我正在使用Cocos2d + Box2d for iOS编写的拖放function的实现。 我需要将它移植到Sprite Kit。 逻辑是非常基本的: 当用户触摸屏幕时,在手指下find精灵 在find的精灵和场景的物理体之间创build鼠标关节,将关节的目标设置为触摸的位置 当触摸移动时,更新联合的目标到新的位置 当触摸结束时,移除关节 一切工作都很好。 我喜欢触摸结束时模拟物理的方式 – 拖动的形状的速度取决于拖动的速度和方向,所以当我移动精灵的时候,我的手指离开屏幕,它将继续沿相同的方向移动,但是现在受到影响重力和阻尼。 不幸的是,我无法使用Sprite Kit重现相同的效果。 没有像鼠标关节这样的关节,但我尝试过使用其他关节types。 我几乎成功与SKPhysicsJointFixed – 我创build新的精灵和它之间的联合和拖动精灵,当触摸移动我移动新创build的精灵。 不幸的是,它不能像Cocos2d + Box2d中的鼠标关节那样工作 – 拖动精灵时,其速度总是等于零。 所以,每当我把手指从屏幕上移开时,被拖动的精灵就会立即停下来,并受重力影响而开始下坠。 无论拖动手指时移动的速度有多快,释放拖动的形状后,其行为方式都完全相同。 我的问题是如何在Sprite Kit中实现鼠标连接,或者如何实现如上所述的拖放function? 更新:这是一个box2d鼠标联合的例子,可以给你更清晰的视图,我想要使用Sprite Kit实现: http : //blog.allanbishop.com/wp-content/uploads/2010/09/Box2DJointTutorial1.swf

加长跳跃时的跳跃高度,直到最大高度

我正在使用以下方法来使我的angular色跳转: override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { if onGround && !gameOver { self.character.physicsBody?.applyImpulse(CGVectorMake(0, 75)) self.onGround = false } } override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { } 这个工作正常,但是我想让angular色根据触摸的长度跳到一定的高度,直到最大。 我已经尝试了一些帧持续时间,但没有奏效。 我怎样才能让angular色跳跃基于触摸长度,直到最大高度?

SKTexture得到图像名称

有没有可能从SKSpriteNode从SKTexture获取当前的图像名称? 我是SpriteKit中的新成员,我在写一个小游戏。 我需要侦测忍者什么时候会击中敌人。 像这样的东西 我正在做SKAction – (void)setUpHit { SKTextureAtlas *hitAtlas = [SKTextureAtlas atlasNamed:@"Ninja_hit"]; SKTexture *hit1 = [hitAtlas textureNamed:@"Ninja_hit_1"]; SKTexture *hit2 = [hitAtlas textureNamed:@"Ninja_hit_2"]; SKTexture *hit3 = [hitAtlas textureNamed:@"Ninja_hit_3"]; SKTexture *hit4 = [hitAtlas textureNamed:@"Ninja_hit_4"]; SKAction *hitAnimation = [SKAction animateWithTextures:@[hit1, hit2, hit3, hit4] timePerFrame:0.1]; SKAction *wait = [SKAction waitForDuration:0.3]; SKAction *goBack = [SKAction animateWithTextures:@[hit1, [SKTexture textureWithImageNamed:@"Ninja"]] timePerFrame:0.1]; […]

Sprite Kit允许的categoryBitMask的最大数量是多less?

我听说每个Sprite Kit游戏只允许使用32个不同的categorybitmask。 有没有办法解决? 我绝对需要更多的(大约3-4倍以上,因为游戏是一个开放的世界)。 我build立了我的categorybitmask如下: static const uint64_t boundaryCategory = 0x1 << 0; static const uint64_t mainCharCategory = 0x1 << 1; … static const uint64_t someOtherCategory = 0x1 << 31; 我甚至改变uint32_t到uint64_t希望这将加倍我可以使用的categorybitmask的数量。 不幸的是,事实并非如此。 如果有人知道任何技术绕过这个限制,我将非常感激。

NSUserDefaults不保存

我在我的精灵工具包应用程序中,我的NSUserDefaultsvariables不起作用的问题。 在createSceneContents (我知道被称为) if (![defaults objectForKey:@"obj"]) { difficultyLabel.text = @"Difficulty: Easy"; [defaults setObject:@"Easy" forKey:@"obj"]; } else { difficultyLabel.text = [NSString stringWithFormat:@"Difficulty: %@", [defaults objectForKey:@"diff"]]; } 然后当你点击SKLabelNode来改变难度和这个代码被调用 if ([label.text isEqualToString:@"Difficulty: Easy"]) { label.text = @"Difficulty: Hard"; [defaults setObject:@"Hard" forKey:@"obj"]; NSLog(@"%@",[defaults objectForKey:@"obj"]); } else { label.text = @"Difficulty: Easy"; [defaults setObject:@"Easy" forKey:@"obj"]; NSLog(@"%@",[defaults objectForKey:@"obj"]); 但是当我停止程序并再次运行时,它总是说难度:容易。 有什么build议么?