Tag: 精灵套件

从SKScene展示一个UIViewController

我试图从SKScene提出一个UIViewController,我不知道如何做到这一点。 Googlesearch提供的大部分内容是如何从SKScene展示共享屏幕,但这不是我想要做的。 只是一个常规的视图控制器,将有一个button和一个标签(也可能是一个图像)。 这是我的Intro.m中的代码。 这不是游戏场景,只是带有标题,播放button和删除广告button的介绍屏幕: #import "MyScene.h" #import "Intro.h" #import "PurchasedViewController.h" @interface PurchasedViewController () -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { ….. SKSpriteNode *removeAds = [SKSpriteNode spriteNodeWithImageNamed:@"removeAds"]; removeAds.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)/6); removeAds.zPosition = 1; removeAds.name = @"RemoveAds"; [self addChild:removeAds]; } – (void)performTouches:(NSSet *)touches { for (UITouch *touch in touches) { CGPoint pointInSKScene = [self.view […]

用atlas文件和SpriteKit进行批处理绘图的问题

所以我遇到了一个我正在构build的游戏平台上滞后的问题。 所以我正在研究如何提高性能。 我正在尝试批量绘图,以便减less绘制调用。 我有问题,但。 因此,一个全新的项目: 我有4个英雄精灵,所有图像都存储在.atlas文件夹中。 所以在阿特拉斯文件夹中每个精灵都有一个1/2 / 3x的图片。 我将其拖放到xcassets文件夹中。 然后我去我的sks文件创build4个精灵,并相应地改变纹理。 默认情况下,它们都具有相同的混合模式。 我有默认规则设置为true忽略兄弟顺序。 所有的精灵都在默认的z 0层上。 我已经设置了显示绘制计数。 我期望看到1画,因为所有的图像都在同一个地图集文件,但我看到4。 有什么我失踪? 只是好奇我怎么得到这个正常工作。 谢谢你的帮助!!!

我应该在游戏中拥有多less个视图控制器?

我开始使用spritekit构build我的第一个游戏。 现在我只有一个视图控制器,它提供了开始屏幕的场景: override func viewDidLoad() { super.viewDidLoad() let scene = StartScreenScene() // Configure the view. let skView = self.view as SKView skView.showsFPS = true /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill skView.presentScene(scene) } […]

如何让SKActions通过Sprite Kit中的SKTransition运行?

试图在我的Sprite Kit项目中的场景之间转换时,我尝试了下面的代码: – (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ XYZGameScene *gameScene = [[XYZGameScene alloc] initWithSize:CGSizeMake(self.size.width, self.size.height)]; crossFade = [SKTransition fadeWithColor:[UIColor blackColor] duration:2]; [playButtonSprite runAction:changePlayButtonTextureOFF]; if(toGameAction){ [self.scene.view presentScene:gameScene transition:crossFade]; }else{} } 问题是,当我按下用toGameAction触发TRUE的button并且开始过渡时,我所移动的背景中的某些对象的SKA停止。 这不是我想要的。 我正试图使两个场景之间的过渡无缝。 由于背景是相同的,只有一个场景是菜单,另一个是实际的游戏。 如果您在理解我要实现的内容时遇到困难,那么本质上是当您按下Flappy Bird中的button并且背景不会停止通过菜单和游戏之间的过渡。

如何正确地得到一个手势识别器来根据速度stream畅地旋转一个精灵

我有一个Sprite通过纹理数组进行animation处理, spinLeft增加了数组索引,而spinRight减less了索引,如下面对我的其他问题的回答所示: https://stackoverflow.com/a/44792902/6593818 animation工作正常,但现在我试图通过手势识别器或其他forms的input来控制animation 。 在引用的问题中,旋转函数有一个速度input(TimeInterval),所以我只需要一个手势识别器的输出: 我想弄清楚如何让对象对我的手指做出反应,就像本video所示: https : //youtu.be/qjzeewpVN9o video不仅仅是一个基本的UIPanGesture阅读速度,我想。 至less,我不知道如何实现它。 这个项目是通过摄影展示朋友的雕塑。 func spin(direction: Direction, timePerFrame: TimeInterval) { nextTextures = [] for _ in 0…6 { var index = initialTextures.index(of: sprite.texture!) // Left is ascending, right is descending: switch direction { case .left: if index == (initialTextures.count – 1) { index = 0 } […]

屏幕和值不同的节点位置

我试图让我的游戏中的敌人射击子弹时遇到麻烦。 问题是子弹纹理看起来不是来自敌人的纹理。 子弹纹理看起来与敌人的位置相去甚远。 看到下面的图片,了解我在说什么。 但是,英雄主angular可以正常拍摄,子弹纹理也可以正常工作。 我认为问题出在碰撞交互中,敌人的纹理保持在墙壁之间,而存储的位置则保持墙外的价值。 太奇怪了 这里的拍摄方法的代码 -(void)disparo { DDLogVerbose(@"DISPARO de un enemigo."); NSLog(@"DISPARO de un enemigo."); CGPoint location = cobra.position; self->balasyExplosionesAtlas = [SKTextureAtlas atlasNamed:@"Clouds"]; SKSpriteNode *bullet = [SKSpriteNode spriteNodeWithTexture:[balasyExplosionesAtlas textureNamed:@"bala"]]; NSLog(@"Posicion DISPARO-ENEMIGO –> x %f — y %f", cobra.position.x, cobra.position.y ); bullet.position = CGPointMake(cobra.position.x, cobra.position.y + cobra.size.height/2); // bullet.position = location; bullet.zPosition = […]

SpriteKit SKPhysicsBody破碎的碰撞

我有一个SKSpriteNode有一个静态的身体,从凹道与edgeChainFromPath生成。 我们把这个节点叫做房子 。 我还有另外一种SKSpriteNode ,它有一个dynamic方形体,用rectangleOfSize生成。 我们称这个节点为一个盒子 。 在我的场景中,这些箱子又被砸到房子里 ,由于他们都有尸体, 箱子应该和房子碰撞,然后弹开。 我正在滚动场景,因此创build了上述“完全相同” 房子的新实例。 我遇到的问题是一些房屋碰撞完全或部分破裂。 有些房屋应该和箱子碰撞,有的与箱子碰撞,而有的与箱子碰撞。 这个问题只发生在iPad上,从来没有在iPhone上发生。 在iPad模拟器和真正的iPad设备上都会发生。 这个问题完全是随机的,随机的房子 。 我也尝试用edgeLoopFromPath创build房子的身体,但问题依然存在。 另外,我正在画物理学,可以看到房子的物理体是完全一样的。 没有什么特别的场景或节点值得一提。 我在iOS 9使用Swift SpriteKit 。 更新 : 似乎问题是在设置家庭节点的规模。 我必须这样做才能在所有屏幕尺寸上具有普遍的外观。 仍在寻找解决scheme/解决方法…

更改spritekit中的初始场景

目标: 在Instructions1.swift文件中加载场景作为游戏的第一个场景。 我做了什么 : 所以我在我的项目中创build了2个新文件:Instructions1.sks和Instructions1.swift 然后在GameViewController.swift中,我改变了viewDidLoad,如下所示: override func viewDidLoad() { super.viewDidLoad() if let scene = GameScene.unarchiveFromFile("Instructions1") as? GameScene { // Configure the view. let skView = self.view as! SKView skView.showsFPS = true skView.showsNodeCount = true /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to […]

使用Sprite Kit的硬件特定地图集在iPad上被炸毁

从WWDC 2013观看503“使用Sprite Kitdevise游戏”,他们说纹理地图集的好处之一就是您只需要将文件夹拖放到XCode,并为不同设备(OSX,iPhone,iPhone)生成特定于硬件的地图集视网膜,iPad …) 那是对的吗? 我正在删除一个包含精灵animation帧的文件夹,尽pipe它在iPad 2和iPad视网膜上显示的尺寸相同,但它的尺寸是正确尺寸的两倍,当然,在iPad视网膜中图像也是像素化的。 我究竟做错了什么?

与GameplayKit的障碍

这是我的问题: 如何将一个SKSpriteNode数组转换成一个SKSpriteNode数组,以便代理人可以通过使用goalToAvoidObstacles:(nonnull NSArray<GKObstacle *> *) maxPredictionTime:(NSTimeInterval)来适当地避免这些障碍goalToAvoidObstacles:(nonnull NSArray<GKObstacle *> *) maxPredictionTime:(NSTimeInterval) /? 看来,我创buildGKObstaclearrays的方式不允许GKGoal正确地将这些障碍物识别为障碍物,无论我给目标带来多大的体重。 我目前有几个SKNode被添加到SKScene chapterScene 。 每个节点都被添加到我正在存储的数组中,名为obstacArray 。 我以下面的方式build立了一个很好的testing: 工作障碍 – (void)didMoveToView:(nonnull SKView *)view { [super didMoveToView:view]; // Add three obstacles in a triangle formation around the center of the scene. NSArray<GKObstacle *> *obstacles = @[ [self addObstacleAtPoint:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) + 150)], [self addObstacleAtPoint:CGPointMake(CGRectGetMidX(self.frame) – 200, CGRectGetMidY(self.frame) […]