Tag: 精灵套件

在spriteKit中制作一个粒子

我创build了一个粒子,当我在Xcode的属性窗口上testing它时,它看起来像这样: 我已经将这个粒子添加到场景中,做了一个圆圈,并迫使粒子运行这个圆圈: NSString *myParticlePath = [[NSBundle mainBundle] pathForResource:@"particle" ofType:@"sks"]; SKEmitterNode *myParticle = [NSKeyedUnarchiver unarchiveObjectWithFile:myParticlePath]; [self addChild:myParticle]; CGPathRef circle = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL); SKAction *followTrack = [SKAction followPath:circle asOffset:NO orientToPath:YES duration:1.0]; SKAction *forever = [SKAction repeatActionForever:followTrack]; [myParticle runAction:forever]; 这是它的样子。 就像一块白糖糖。 节点粒子跟随path,但不是生成的粒子。 我用虚线表示了一个圆圈,所以你可以看到它所遵循的path。 有任何想法吗? 谢谢

滚动背景 – 雪碧套件

所以我试图通过使用这个职位的解决scheme( Sprite工具包侧滚动 )创build一个无限的滚动背景。 但是,我想要使图像可重复。 正如你可以在下面的video中看到的,图像完成后它是水平的方式,有一些空白的差距。我想使图像填补这一差距,所以无限重复。 http://www.youtube.com/watch?v=kyLTGz7Irrc或https://vimeo.com/79555900 (密码:spritekit) 我做了什么 : for (int i = 0; i < 2; i++) { SKSpriteNode * bg = [SKSpriteNode spriteNodeWithImageNamed:@"bgimage"]; bg.anchorPoint = CGPointZero; bg.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.origin.y); bg.name = @"snow1"; [self addChild:bg]; } 并在更新方法中: [self enumerateChildNodesWithName:@"snow1" usingBlock: ^(SKNode *node, BOOL *stop) { SKSpriteNode *bg = (SKSpriteNode *) node; bg.position = […]

背景图像大小雪碧套件游戏

我刚开始一个新的Sprite Kit项目来学习如何使用它。 我看了很多教程,但没有教程对我的问题/问题有一个答案。 我想为我的iPhone 5S创build一个应用程序。 所以屏幕尺寸是1136×640。 我为我的应用程序创build了一个1136×640背景图像。 但是,当我把图像添加到我的应用程序,它的waaay大! iOS模拟器只显示图像的中间部分。 有人能告诉我什么屏幕大小,我必须使用,为什么? 非常感谢! 这里是我从教程中复制的代码。 代码位于initWithSize方法的myScene.m文件中 SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"myBackground"]; background.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); [self addChild:background]; 编辑 : 我search谷歌,发现这一点: viewDidLoad方法必须用“viewWillLayoutSubviews”来改变。 这是这个方法: – (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; // Configure the view. SKView * skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount = YES; // Create and configure the scene. […]

如何在每增加50点后加速一个Sprite Kit游戏

我正在用Sprite Kit制作一个2D游戏,我需要添加一个方法来在每50分钟后加速游戏。 我制定了一个方法来增加速度,但是我必须复制,粘贴和调整更新方法中的if语句每增加50点。 我的解决scheme的另一个问题是,我必须在加速之后立刻给我的分数加分,因为如果不是这样,游戏速度就会完全加快,但我不知道为什么。 到目前为止,我的解决scheme是: // inside the update method // points are added when an enemy is destroyed // pointSpeed is the float variable that is used to change positions if (points == 4) { pointSpeed++; points++; } if (points == 8) { pointSpeed++; points++; } if (points == 12) { pointSpeed++; points++; } […]

SKAction前进

我如何获得SKNode前进? 我已经能够使用[SKAction moveByX:y:duration:]使节点在一个固定的方向上移动,但是我希望它在相对于它所面对的方向的方向上移动。 我正在寻找使每个节点转45度,然后“走”向前50个像素。 这似乎很简单,我只是无法find它。

添加到SpriteKit中的父项时,未存档的节点不会显示

以前我一直在质疑是否可以使用场景编辑器创build复杂的SKSpriteNodes,而不是使用它来布局SKScenes。 在@Anton Rogachevskyi的帮助下,我开始使用unarchiveNodeFromFilefind.SKS文件。 它会像我所期望的那样加载sks文件,但是当我尝试将它添加到当前场景时,不会出现任何内容。 如果我在addChild行中断,并预览正确显示在预览窗口中的对象,所以我知道它find了正确的文件。 sks文件里面是一个自定义对话框类,并在“必需的init?(coder aDecoder:NSCoder)”中设置断点。“我可以告诉自定义对象正在初始化正确。 在对话框类的内部,我以编程方式向对象添加一个粉红色的框,以显示它到达类的init class TeamDialog: SKSpriteNode { init(size: CGSize) { super.init(texture: nil, color: .red, size: size) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } func setup() { let pinkBox = SKSpriteNode(color: .magenta, size: CGSize(width: 100, height: 100)) pinkBox.zPosition = 500 addChild(pinkBox) } } 而在场景中,这是我如何find对象,并尝试将其添加到场景,它出现在预览中,但没有显示在屏幕上 private func displayDialog() { […]

应用程序变为活动状态时如何保持SpriteKit场景暂停?

有没有办法阻止SpriteKit在进入前景/活动时自动取消暂停场景? 我设置了paused = true并希望它保持如此,即使应用程序被发送到后台后再次激活。 我应该补充一点,我很快就做到了,尽pipe我不希望在这方面的行为有所不同。

是否有可能停用spriteKit物理机构中的碰撞?

我正在寻找在我的spriteKit游戏中为我的英雄收集物品的最佳方式,在尝试了几种方法来做到这一点之后,我的结论是最好的方法是将物品与物理物体可以检测到碰撞,但不会与我的英雄相撞。 可以做到吗? 停用物理碰撞而不失去检测碰撞的能力? 听起来有点矛盾,我知道…因为,另一种方法是只创build一个没有物理体的SKSpriteNode,那么就不会有碰撞,但是“检测”碰撞的方法是手工制造的,而且更加困难,因为我需要在我的英雄中设置一个坐标系检测,当他将在这些具体的坐标(在物品上)时,我会使物品消失。 任何想法如何做到这两种方式中的任何一种更容易?

一次绘制多个skshapenode?

您好我已经绘制skhapenodes连接我的graphics中的节点为我的视觉a *表示。 for(int x=0; x<64; x++) { for(int y=0; y<48; y++) { PathFindingNode *node = [[gridToDraw objectAtIndex:x] objectAtIndex:y]; for(int i=0; i< node.connections.count; i++) { PathFindingNode *neighbor = [node.connections objectAtIndex:i]; SKShapeNode *line = [SKShapeNode node]; CGMutablePathRef pathToDraw = CGPathCreateMutable(); CGPathMoveToPoint(pathToDraw, NULL, node.position.x, node.position.y); CGPathAddLineToPoint(pathToDraw, NULL, neighbor.position.x, neighbor.position.y); line.path = pathToDraw; line.lineWidth = 0.1f; [line setStrokeColor:[UIColor blueColor]]; […]

SpriteKit – 如何正确地暂停和恢复应用程序

游戏教程本书的帮助下制作iPhone的最新游戏有很大的问题。 注意:从SpriteKit的方法 – 多任务的正确方法不起作用。 所以,在我的ViewController.m文件中,我正在定义私有variablesSKView * _skView。 然后,我做这样的事情: – (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; if(!_skView) { _skView = [[SKView alloc] initWithFrame:self.view.bounds]; _skView.showsFPS = NO; _skView.showsNodeCount = NO; // Create and configure the scene. SKScene * scene = [MainMenuScene sceneWithSize:_skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. [_skView presentScene:scene]; [self.view addSubview:_skView]; } } 我有我的_skView定义,一切正常。 但是,当我中断游戏时,它会将其状态重置为初始状态,例如,如果我正在玩游戏,有人打电话给我,则游戏切换回主菜单。 不能这样。 基于我上面提到的网站,我创build了这个: […]