Tag: sprite kit

SKLabelNode会消失,但仍然是可点击的

我正在使用SpriteKit和Swift制作游戏,运行Xcode 6.我有一个SKLabelNode ,在这个例子中我们称之为myLabelNode 。 当我调用myLabelNode.removeFromParent()它会从场景中删除节点,因为它应该。 节点数量下降1,并且在屏幕上的任何地方都不可见。 但是,当我点击myLabelNode以前的位置时,我的程序仍然会调出只有在触摸myLabelNode时才会发生的function。 我也尝试将myLabelNode.removeFromParent()与myLabelNode.hidden = true结合起来,但它仍然是可触摸的,即使它不应该调用该函数。 我应该如何解决这个问题? 我应该使用不同的方法吗? 这是否应该发生? 编辑: let lemonadeLabel = SKLabelNode(fontNamed: "Optima-ExtraBlack") override func didMoveToView(view: SKView) { lemonadeLabel.text = "Lemonade Stand" lemonadeLabel.fontSize = 24 lemonadeLabel.fontColor = SKColor.yellowColor() lemonadeLabel.position = CGPoint(x: size.width/2, y: size.height*0.66) lemonadeLabel.zPosition = 2.0 addChild(lemonadeLabel) } override func touchesEnded(touches: NSSet, withEvent event: UIEvent) { let touch […]

是否有可能在Xcode中打开SpriteKit的现场debugging绘图?

是否有可能在Xcode中打开SpriteKit的字段dubug绘图? 我的意思是像下面的图片(这是从WWDC2014,会议608)。

SpriteKit场景屏幕在iOS9 / Xcode7上的偏移量

我将一个SpriteKit项目从Xcode64移到Xcode7,在iOS9模拟器中运行它,屏幕内容被移动。 (在iOS8模拟器中运行时不会移动。) iOS9模拟器截图: 放大Xcode7中的SpriteKit场景,使用不同的中心缩放帧和内容。 当场景没有缩小或放入时,看起来很完美; 但是缩小它看起来像这样:(注意黄色框架不再与节点alignment) Xcode 7场景缩小截图: 我创造了一个新的场景,看看哪些细节不同。 Xcode中的场景 – 首先是坏 – 第二好: Xcode中的节点 – 首先是坏的 – 第二好: 注意场景的锚点和节点的位置在好坏版本之间是不同的。 我可以手动更改不良值以反映良好的价值。 这将涉及移动20到30个节点。 我想移动这些节点 – 比如 – (384,512)。 然而,只要使用鼠标,他们将在一些分数的位置(212.561而不是212)结束。 问题1: 我可以在Xcode7中移动一组特定的节点吗? 或者:是否有“准则”,我可以“捕捉”? 问题2: 我可以导入/导出/保存为/ …现场,以便“事情很好”吗? (放大Xcode6.4保持黄框和节点alignment,现在在Xcode7中,我想以一种方式导入场景,再次缩放将保持黄框和节点alignment – 希望这也会在iOS9模拟器屏幕上解决场景偏移。)

如何正确打开和closuresSKNode的SKEffectNode?

我想要显示一个效果节点,如果一个节点被选中。 如果没有,我想closures/删除该效果。 (我在touchesBegan设置了一个节点)。 我使用下面的代码。 打开和closures效果节点正在混合我的头脑,因为我将主节点添加到效果节点。 我应该怎么把它关掉而不失去主节点呢? 我可以将效果的颜色更改为透明以隐藏它,但听起来不像正确的方式…将主节点从效果节点移动到效果节点的父节点可能会正常工作,但是我必须重新定位它,听起来像正确的方式.. 什么是这样做的正确途径之一? (正确=性能好,不增加编码复杂度) SKShapeNode* tile = [SKShapeNode node]; [tile setPath:CGPathCreateWithRoundedRect(CGRectMake(0, 0, 60, 100), 4, 4, nil)]; tile.strokeColor = tile.fillColor = [UIColor colorWithRed:0.0/255.0 green:128.0/255.0 blue:255.0/255.0 alpha:1.0]; tile.position = CGPointMake(10, 100); SKEffectNode *effectNode = [[SKEffectNode alloc] init]; GlowFilter *glowFilter = [[GlowFilter alloc] init]; [glowFilter setGlowColor:[[UIColor yellowColor] colorWithAlphaComponent:1]]; [effectNode setShouldRasterize:YES]; [effectNode setFilter:glowFilter]; […]

在GameScene中显示一个UIAlertController(SpriteKit / Swift)

在swift中显示UIAlertView的简单方法是: let alert = UIAlertView() alert.title = "Alert!" alert.message = "A wise message" alert.addButtonWithTitle("Ok, thank you") alert.show() 但是现在在iOS 9中这已经被折旧了,build议使用UIAlertController : let myAlert: UIAlertController = UIAlertController(title: "Alert!", message: "Oh! Fancy", preferredStyle: .Alert) myAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) self.presentViewController(myAlert, animated: true, completion: nil) 这是伟大的,但我使用SpriteKit和一个GameScene,这给出了一个Value of type 'GameScene' has no member 'presentViewController'的Value of type 'GameScene' has no […]

如果我不用SKAction直接修改SKSpriteNode的位置和旋转,SpriteKit是否会应用物理?

例如,如果我想自己制作自定义animation,并通过x += 10编程方式每隔一帧移动一个SKSpriteNode,那么Sprite Kit是否仍能正确应用物理,还是必须始终使用SKAction?

无法点击SKSpriteNode – 没有触摸检测到ios

我对iOS,Objective C非常新,并且使用Xcode。 我只做了一个简单的新闻类应用程序,但现在我想创build一个我在另一个平台上发布的游戏。 基本上,我有一个物体随机出现,然后淡出,目的是挖掘物体使其消失。 不过,我似乎无法挖掘该对象,即使我设置mySKSpriteNode.userInteractionEnabled = YES; 这是我在touchesBegan方法中所具有的: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { /* Called when a touch begins */ NSLog(@"Something was touched"); UITouch *touch = [touches anyObject]; NSLog(@"%@", touch); CGPoint location = [touch locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; if(node == mySKSpriteNode) [node runAction:[SKAction fadeOutWithDuration:0]]; } 在我的日志中,当我点击屏幕(而不是我拥有对象的地方)时, 2014-02-17 23:18:30.870 BubbleChallenge[48541:70b] Something was touched 2014-02-17 […]

Spritekit在进入后台时崩溃

所有的人,我一直在开发一个应用程序,其中我有一个SKMction对象的NSMutableDictionary。 SKAction是用来播放声音的。 这一切运作良好,除了…应用程序崩溃后进入后台堆栈跟踪: * thread #1: tid = 0x187d7, 0x3461b932 libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient + 10, queue = 'com.apple.spritekit.renderQueue, stop reason = EXC_BAD_ACCESS (code=1, address=0x1) frame #0: 0x3461b932 libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient + 10 frame #1: 0x3461c3d0 libGPUSupportMercury.dylib`gpusSubmitDataBuffers + 104 frame #2: 0x2eafc4a4 IMGSGX554GLDriver`SubmitPackets + 124 frame #3: 0x31f83cb0 GLEngine`gliPresentViewES + 168 frame #4: 0x31f8e136 OpenGLES`-[EAGLContext presentRenderbuffer:] + 62 frame #5: […]

如何使用sprite工具包在iOS中创build一个alpha蒙版

我试图达到的效果是在黑暗的地方有一圈光。 这个效果和小宠物游戏中的效果类似,当你在一个黑暗的洞穴里,只有你周围的视野有限。 从我已经尝试和阅读的内容来看,我一直无法在具有alpha级别的精灵套件中的节点上创build掩码。 我设法制作的面具都有很强的优势,而且基本上只是裁剪而已。 阅读关于具有maskNode属性的SKCropNode的苹果开发者页面,它说:“如果掩码中的像素具有小于0.05的alpha值,则图像像素被掩盖掉。 这不幸听起来像像素将被完全遮蔽或完全包括在内,没有alpha值。 如果我想说的话很难说,下面是我所取得的成果: https : //www.dropbox.com/s/y5gbk8qvuq4ynh0/iOS%20Simulator%20Screen%20shot%20Jan%2020%2C %202014%201.06.23%20 PM.png 这里是我想要实现的图像: https : //www.dropbox.com/s/wtwfdi1mjs2n8e6/iOS%20Simulator%20Screen%20shot%20Jan%2020%2C%202014%201.05.54%20PM.png 我设法得到上述结果的方法是,我掩盖了硬边圆,然后添加了一个从外面的黑色渐变为透明的图像。 这种方法不起作用的原因是因为我需要有多个圆圈,并用我刚刚提到的方法,当圆圈相交的透明圆圈外面的黑暗可以看到。 总而言之,我所需要的是一种在中心开始黑暗,然后淡出的圆圈。 然后,如果圆圈是黑色的,那么它后面的图像就可以看到,圆圈透明的地方,它后面的图像是看不到的。 再次,如果我所说的话很难跟随。 这是我正在使用的代码。 其中一些是从其他职位发现的。 SKSpriteNode *background = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(500, 500)]; background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); SKCropNode *cropNode = [[SKCropNode alloc] init]; SKNode *area = [[SKNode alloc] init]; int x = 65; //radius of the circle […]

如何从Sprite Kit场景引用当前的ViewController

我很难find我想这个问题的答案并不难。 我怎样才能引用SKScene的视图控制器上定义的方法和属性? 并在此基础上:如何引用从另一个SKScene中加载的SKScene中的ViewController?