Tag: sprite kit

简单的雪碧套件场景设置出错

我正在尝试设置一个简单的Sprite Kit安装程序。 我正在做的是从“空应用程序”重新创build默认的xCode模板“雪碧套件游戏”。 它不断崩溃在skView.showsFPS = YES; 线。 我无法解释。 你可以吗? 谢谢! 一些代码: AppDelegate.m – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; MenuController *menuController = [[MenuController alloc] init]; self.window.rootViewController = menuController; [self.window makeKeyAndVisible]; return YES; } MenuController.m – (void)viewDidLoad { [super viewDidLoad]; SKView *skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount […]

停止使用RepeatsForever – Sprite Kit的SKAction

我想根据它的旋转在我的精灵节点上运行两个animation。 如果值是负值,则运行其中一个animation,如果是正值,则运行另一个animation。 而我设法做到这一点(但)我有一个问题。 如果Animation1正在运行,并且zRotation更改为正值,则它们都会运行,因为它们会一直重复。 所以我这样做了: NSMutableArray *walkingTextures = [NSMutableArray arrayWithCapacity:14]; for (int i = 1; i < 15; i++) { NSString *textureName = [NSString stringWithFormat:@"character%d", i]; SKTexture *texture = [SKTexture textureWithImageNamed:textureName]; [walkingTextures addObject:texture]; } SKAction *spriteAnimation = [SKAction animateWithTextures:Textures timePerFrame:0.04]; repeatWalkAnimation = [SKAction repeatActionForever:spriteAnimation]; [sprite runAction:repeatWalkAnimation withKey:@"animation1"]; 然后当我想要它停止时: [self removeActionForKey:@"animation1"]; 但它一直在运行,我怎么能停止这个动作呢? 谢谢!

如何在屏幕边界之外正确删除节点?

我正在开发一个精灵套件游戏,其中节点在屏幕最低点以下产生,重力设置为让它们浮动到屏幕的顶部。 一切都很完美,但它很快就开始放慢FPS,最终滞后和故障变得非常缓慢。 我认为解决这个问题的方法是在父节点经过一个点之后从父节点中删除节点,这是我在更新中使用的代码: -(void)update:(CFTimeInterval)currentTime { if (_bubble1.position.y > CGRectGetMaxX(self.frame)+40) { [self removeFromParent]; } } 并且在需要的情况下,这是我在initWithSize方法下面产生的气泡: -(void)didMoveToView:(SKView *)view { [self performSelector:@selector(spawnBubbles) withObject:nil afterDelay:1.0]; [self performSelector:@selector(spawnBubbles1) withObject:nil afterDelay:1.5]; } -(void)spawnBubbles { randomPosition = arc4random() %260*DoubleIfIpad; randomPosition = randomPosition + 20*DoubleIfIpad; randomNumber = arc4random() %7; randomNumber = randomNumber + 1; myColorArray = [[NSArray alloc] initWithObjects:colorCombo1, colorCombo2, colorCombo3, colorCombo4, […]

将发光效果添加到SKSpriteNode

我在黑暗的屏幕上有一个移动的黑色图像,以便更容易看到我想为图像添加白色的光芒。 这是我的运动图像代码: Ghost = SKSpriteNode(imageNamed: "Ghost1") Ghost.size = CGSize(width: 50, height: 50) Ghost.position = CGPoint(x: self.frame.width / 2 – Ghost.frame.width, y: self.frame.height / 2) Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4) Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score Ghost.physicsBody?.affectedByGravity = false Ghost.physicsBody?.isDynamic = true Ghost.zPosition = 2 self.addChild(Ghost) […]

我如何从SKScene展示一个UIViewController?

我正在通过Sprite Kit进入iOS,我认识到这是不明智的。 我的目标是在游戏结束后显示“分享”button。 点击分享button应呈现一个SLComposeViewController(Twitter的份额)。 现场的内容不应该改变。 指示“Game Over”的游戏逻辑位于SKScene的子类SpriteMyScene.m中。 我可以在游戏上显示Sharebutton -(void)update:(CFTimeInterval)currentTime { if (gameOver){ UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button addTarget:self action:@selector(sendToController) forControlEvents:UIControlEventTouchDown]; [button setTitle:@"Show View" forState:UIControlStateNormal]; button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [self.view addSubview:button]; } } – (void)sendToController { NSLog(@"ok"); SpriteViewController *viewController = [SpriteViewController alloc]; [viewController openTweetSheet]; } 我卡住的地方是试图让showTweetButton方法工作。 我的SpriteViewController.m看起来像这样: – (void)openTweetSheet { SLComposeViewController *tweetSheet = […]

iOS模拟器游戏运行速度非常慢(低fps)

潜入精灵套件(xcode 5)。 有两个我正在使用的示例程序,1.创build新项目时包含的默认飞船示例,以及2.我下载的冒险游戏。 在iOS模拟器中运行这些示例(似乎不重要)。 每帧的帧率绝对是糟糕的。 如果我在太空船/ hello世界的例子中只添加了30个旋转太空船,那么FR就会从60 FPS迅速下降到(ug)12 FPS。 冒险游戏的例子,再次,运行在iOS SIM,运行在尖叫10-20 FPS(取决于多less行动正在进行)。 苹果是否认真对待这些游戏例子? Sprite Kit似乎是废话 – 我认为问题是程序员使用Texture Atlas的方式,或者是Sprite Kit(API)处理它们的方式。 有人帮我理解这个或修复它? 在Mavericks下运行xcode 5,Mac Mini – 我在Unity3D下编程,在这里没有问题,尤其是使用2DToolkit的30个对象。

iOS 7 Sprite Kit释放内存

我正在构build一个针对新的iOS 7和Sprite Kit的iOS游戏,使用发射器节点和物理来增强游戏性。 在开发应用程序的时候,我遇到了一个严重的问题:创build你的场景,节点,效果,但是当你完成并且需要返回到主屏幕时,你如何释放这些资源分配的所有内存? 理想情况下,ARC应该释放一切,应用程序应该回到创build场景之前的内存消耗级别,但这不是发生的情况。 我添加了下面的代码,作为视图的dealloc方法,它绘制场景并负责在closures(删除)时删除所有内容: – (void) dealloc { if (scene != nil) { [scene setPaused:YES]; [scene removeAllActions]; [scene removeAllChildren]; scene = nil; [((SKView *)sceneView) presentScene:nil]; sceneView = nil; } } sceneView是一个UIView,它是场景的容器 场景是SKScene类的扩展,创build所有SKSpriteNode对象 我非常感谢在这个问题上的任何帮助。

在SKScene中设置button

我发现UIButtons不能很好的与SKScene ,所以我试图SKNode在SpriteKit的button。 我希望它的工作方式是,如果我在SKScene初始化一个button并启用触摸事件,那么当按下button时,button将在我的SKScene调用一个方法。 我会很感激任何意见,会导致我find解决这个问题。 谢谢。