Tag: 雪碧套件

Sprite Kit场景编辑器GameScene.sks场景的宽度和高度

我正在使用spritekit场景生成器来构build我的场景(在xcode 7 ios9中创build项目时也称为GameScene.sks文件)。 在设置屏幕高度和宽度时,SpriteKit只使用像素值。 我的问题是这样的: 如果我将像素值设置为iPhone 6的像素值,对于iPad和iPhone 6 +游戏是否会太小? 为什么没有select适合设备屏幕? 我该怎么做才能避免这种情况?

跳转到节点层次结构中的特定SKNode

我注意到,SKNode方法children和childNodeWithName:顾名思义只是从被查询的节点正下方的子节点返回结果。 即[root children]; 将返回包含节点@[CUBE1, CUBE2, CUBE3]的NSArray 。 在下面的图表中,我想从ROOT(SKScene)级别向下到SPHERE2,这样我就可以快速访问这个节点的子节点。 我希望[root childNodeWithName:@"SPHERE2"]; 将遍历整个层次并返回一个指向SPHERE2的指针 我的问题:有没有什么我错过了,让我跳进一个指定点的节点树(即使用节点名称) 我可以使用属性来存储指向树中重要位置的指针,然后使用它们来访问和处理任何子节点,所以这是一个选项。

你如何使用SKTextureFilteringNearest与SKTextureAtlas

我似乎使用SKTextureAtlas和最近的邻居过滤纹理有问题。 当我使用没有SKTextureAtlas的最近邻居过滤时,它可以正常工作,但是当我使用SKTextureAtlas时,一切都变成了线性过滤。 代码和结果没有SKTextureAtlas: SKTexture* texture = [SKTexture textureWithImageNamed:@"grass"]; texture.filteringMode = SKTextureFilteringNearest; SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)]; 应该产生最近邻居过滤&做 代码和结果与SKTextureAtlas: SKTextureAtlas* atlas = [SKTextureAtlas atlasNamed:@"myAtlas"]; SKTexture* texture = [atlas textureNamed:@"grass"]; texture.filteringMode = SKTextureFilteringNearest; SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(512,512)]; 应该产生最近的邻居过滤& 不 有什么build议么?

SpriteKit视图抛出NSInvalidArgumentException

我有下面这个代码在viewDidLoad:方法加载一个场景。 SKView *spriteView = (SKView *) self.view; spriteView.showsDrawCount = YES; spriteView.showsNodeCount = YES; spriteView.showsFPS = YES; PFPiePlanesScene *scene = [PFPiePlanesScene sceneWithSize:self.view.frame.size]; scene.scaleMode = SKSceneScaleModeAspectFill; [spriteView presentScene:scene]; 当我在spriteView上调用任何东西时,它会崩溃,并显示以下消息: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setShowsDrawCount:]: unrecognized selector sent to instance 0x9685030' 我认为这是因为它不是将实例视为SKView,而是将其视为UIView。 提前致谢。 一些额外的: Sprite工具包使用此代码来加载场景 。 // Configure the view. SKView * skView […]

在SpriteKit中呈现一个场景而不丢弃之前的?

我的情况是,我有一个GameMenuScene和用户select一个级别后,我想呈现LevelScene 。 但是我不想让之前的GameMenuScene被丢弃,因为LevelScene实际上是LevelScene的一个GameMenuScene ,用户是否完成这个级别将被保存为一个LevelScene的@property LevelScene , GameMenuScene应该能够访问用户结束或退出关卡。 如果我简单地使用presentScene:transition ,则GameMenuScene被丢弃,并且信息不能传回。 我的问题:有没有一种方法来堆叠或推动场景而不丢弃之前(最好使用过渡animation)? 我无法在SKScene的Apple文档中find针对此特定用途的方法。 注意:另一个类似问题的StackOverflow答案build议创build一个新的UIViewController ,在那里呈现LevelScene ,然后以模态方式呈现UIViewController 。 但是我希望在Apple文档中有一个现有的方法,我错过了以模态方式呈现场景本身,而无需创buildUIVIewControllers 。

在iOS Sprite Kit游戏中创build关卡

我正在创build一个游戏,我希望它有一个select水平的场景,然后有水平发挥。 我只是想知道如何去创build关卡和保存当用户已经达到这个水平。 我想在ViewController.h中创build一个BOOL,并在每个场景中调用它,例如LevelCompleted = YES; 然后在玩家尝试播放一个新的关卡或者重播之前的关卡时使用这个布尔 要么, 在每个场景中是否有BOOL,然后将每个场景的头文件导入到级别导航场景中,并使用BOOL来显示级别是否已解锁。 另外,为了在应用程序closures时保存BOOL的值,我使用NSUserDefaults吗? 我已经search了很多关于这个教程,似乎无法find任何。 如果需要更多的信息,请让我知道。

改变一个具有物理体的SKSpriteNode的位置

我不能通过改变来改变SKSpriteNode的位置 self.position = newPosition; 如果它有一个物理体,它就不能工作了。 我得到的解决方法是: self.myStar.physicsBody = nil; [self.myStar changePosition]; self.myStar.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.myStar.size.width/2]; 要么 [self runAction:[SKAction moveTo:newPosiion duration:0.0]]; 但#2并不平坦。 它需要在另一个位置上popup而没有动作。

Sprite Kit – 使用Switch Case将随机的Sprite节点添加到场景中

我有以下代码来创build随机对象并将其添加到场景中。 最后,在随机延迟之后重复该方法。 -(void)createObjects { // Create random start point float randomStartPoint = arc4random_uniform(4) * 64 + 32; CGPoint startPoint = CGPointMake(self.size.width + 50, randomStartPoint); // Create random object and add to scene switch (arc4random_uniform(2)) { case 0: { SKSpriteNode *crate = [SKSpriteNode spriteNodeWithImageNamed: @"crate"]; crate.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:crate.frame.size]; crate.physicsBody.dynamic = YES; crate.physicsBody.affectedByGravity = NO; crate.physicsBody.categoryBitMask […]

我应该如何调整SpriteKit中的标签节点?

所以我在我的场景中有几个SKLabelNodes : SKLabelNode *label1 = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; label1.text = @"Hello World!"; label1.fontColor = [SKColor redColor]; label1.fontSize = 90; label1.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); [self addChild: label1]; 而当场景启动时,我希望它们能够放大。 我为此使用了SKAction,但scaleBy导致文本模糊, resizeTo不起作用。 另外我猜这不是字体的方式。 有没有更好的方式做这个,或者我应该使用UILabels? 我不想这样做,因为这意味着我不能使用SpriteKit物理,或者我可以吗? 谢谢

如何从SKScene展示UIAlertController

我在Spritekit工作,我试图从我的SKScene提出一个UIAlertController,但我遇到麻烦。 我看过几个教程,但是没有一个UIAlertController教程是专门针对Spritekit的。 我不断地看到下面的代码,但它并没有效果,因为SKScene不是一个UIViewController。 [self presentViewController:self animated:YES completion:nil]; 我有下面的相关代码的其余部分。 任何人都可以帮我在我的SKScene上展示我的UIAlerController。 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"You Lose!" message:@"Do You Want To Beat This Level?" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *CancelButton = [UIAlertAction actionWithTitle:@"GiveUp" style:UIAlertControllerStyleAlert handler:<#^(UIAlertAction *action)handler#>]