Tag: 精灵套件

inheritance使用SpriteKit .sks场景文件创build的SKNodes

(这是XCode 6和iOS 8 beta 4) 喜欢新的SceneKit编辑器。 我成功地从.sks文件加载到一个自定义SKScene类的场景。 然而,它里面的对象被实例化为默认类(SKNode,SKSpriteNode等),我不知道如何绑定它们来实例化为自定义子类。 目前,我正在通过创build自定义类和链接到精灵节点作为一个属性来解决这个问题,并且工作正常

SKLightNode性能问题

我已经在SpriteKit( SKLightNode中的新增function)中尝试了SKLightNode ,即使在一个非常简单的testing案例中,我的performance也一直很差。 例如,使用纯色SKSpriteNode上的单一光源 ,我可以在第三代iPad上获得13.2 FPS 。 如果我添加第二个光源 ,则会降至7.7 FPS 。 WWDC会议videoSpriteKit的新增function提到,如果在同一个精灵上有不止一个指示灯,则可能会less于60 FPS,但我甚至无法获得60 FPS。 这是相关的部分。 这里是我的testing场景(从一个光源开始,更多可以通过点击添加): class GameScene: SKScene { override func didMoveToView(view: SKView) { let center = CGPointMake(size.width / 2.0, size.height / 2.0) let background = SKSpriteNode(color: SKColor.lightGrayColor(), size: size) background.position = center background.lightingBitMask = 1 addChild(background) let light = SKLightNode() light.position = center […]

使用Swift理解坐标系SpriteKit的问题

我无法用Swift完全掌握SpriteKit的坐标系。 我看了很多资源,包括苹果开发文档,但由于某种原因,我很困惑(我相信这一定很简单)。 我有一个从SKSceneinheritance的GameScene类。 我只是试图添加SKSpriteNode到屏幕使用各种坐标习惯于屏幕布局。 我相信,当你创build任何SKNode,并通过执行以下步骤给它一个位置 var node = SKSpriteNode(color: UIColor.brownColor(), size: CGSizeMake(100, 100)) node.position = CGPointMake(0, 0) 然后放置任何SKNode使用 self.addChild(node) 已经提供给节点的坐标是父节点中的坐标。 这是否意味着已经创build的棕色广场应放置在左下angular? 这显然不是这样,是什么令我困惑。 我正在使用iPhone 5s模拟器进行肖像testing。 当我将位置设置为(350,50)时,精灵节点只出现在左下angular。

隐藏/显示Spritekit中的iAds

我一直想弄清楚如何在我的Spritekit场景中隐藏和显示iAds。 目前我有这样的设置: ViewController.h #import <UIKit/UIKit.h> #import <SpriteKit/SpriteKit.h> #import <iAd/iAD.h> @interface ViewController : UIViewController <ADBannerViewDelegate> { ADBannerView *adView; } -(void)showsBanner; -(void)hidesBanner; @end ViewController.m #import "ViewController.h" #import <UIKit/UIKit.h> #import <iAd/iAD.h> #import "MyScene.h" #import <SpriteKit/SpriteKit.h> @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; // Configure the view. SKView * skView = (SKView *)self.view; skView.showsFPS = NO; skView.showsNodeCount = NO; […]

游戏引擎Collison Bitmask …为什么0x01等?

在Sprite Kit(iOS开发版)和Cocos2d-x(我知道它几乎是Sprite Kit的灵感,因此他们使用了很多相同的工具)的情况下,我终于决定找出这个原因发生: 当使用物理引擎时,我创build一个精灵,并添加一个physicsBody到它。 大多数情况下,我知道如何设置类别,碰撞和联系位掩码以及它们的工作方式。 问题是实际的位掩码数字: SpriteKit: static const uint32_t missileCategory = 0x1 << 0; sprite.physicsBody.categoryBitMask = missileCategory; 的Cocos2D-X: sprite->getPhysicsBody()->setCategoryBitmask(0x01); // 0001 我完全困惑,为什么我会写0x01或0x1 << 0在任何情况下。 我有点得到,他们使用hex,这与32位整数有关。 而据我已经能够谷歌,0x01是二进制0001是十进制1。 0x02是二进制的0010,十进制是2。 好的,所以有这些转换,但为什么在这个世界上,我会用它们来做类似的事情? 就我的逻辑而言,如果我说出一个玩家类别,一个敌人类别,一个导弹类别和一个墙类别,这只是4个类别。 为什么不使用string的类别? 或者甚至只是二进制数字,任何非CS的人会理解像0,1,2和3? 最后,我很困惑为什么有32个不同的类别可用? 我以为一个32位的整数有0到几十亿的数字(当然是无符号的)。 那为什么我没有几十个不同的可能类别呢? 有没有我不理解的某种优化? 或者这只是他们使用的一个老惯例,但是不需要? 还是有什么事情发生,只有两个学期的大学课程CS培训的人不明白?

是否有可能在SpriteKit的任意点周围旋转节点?

有没有办法在一个任意的点周围SpriteKit中的节点旋转? 我现在可以操作节点的anchorPoint ,但是如果我想要使用的旋转点位于节点之外,这还不够。 在SpriteKit中实现这种旋转的最佳方式是什么?

如何以一致的速度移动IOS SKSprite?

在IOS SpriteKit中玩SKSprites,我基本上想要一个精灵随机移动一定距离的某个方向,然后select一个新的随机方向和距离。很简单,创build一个方法,产生随机数然后创buildanimation和animation的完成块中有callback相同的例程。 这是行得通的,但是它也保持animation以相同的速度移动,因为animation全部基于持续时间。如果对象必须移动100,则它以移动的速度移动1/2,如果下一个随机指示它移动移动200 …那么我怎么才能以一致的速度移动?

在触摸过程中未检测到自定义SKSpriteNode

在学习SpriteKit时,我正在尝试做一个小型的冒险游戏。 我正在创造一个英雄,并将其添加到现场,然后在touchesBegan:我检测是否触摸源于英雄,并采取相应的行动。 如果我添加英雄作为SKSpriteNode触摸检测到他。 如果我将他添加为SKSpriteNode的子类,则触摸不会! 不同之处在于: _heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"]; VS _heroNode = [[ADVHeroNode alloc] init]; init看起来像这样: – (id) init { if (self = [super init]) { self.name = @"heroNode"; SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"]; [self addChild:image]; } return self; } 添加英雄作为SKSpriteNode的子类的作用在于它被添加到场景,但触摸不检测他。 我的touchesBegan:看起来像这样: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { /* Called when a touch begins */ UITouch […]

以安全格式存储游戏偏好和保存的游戏

这是从苹果文档: 当您devise一个向Game Center报告分数的游戏时,您还应该考虑游戏的安全需求。 您希望报告给Game Center的分数是玩家如何做的准确logging。 这里有两点build议: 以安全的格式存储游戏的偏好和保存的游戏,而不是以明文forms存储。 如果您的游戏数据以明文forms存储,玩家可以使用iTunes下载已保存的游戏数据,对其进行修改,然后重新同步到设备。 这可能会让玩家获得比你想要的更高的分数。 始终为排行榜设置合理的最小值和最大值。 我知道数据可以存储在.plist文件或.xml或.json中,即使在数据库中也是如此。 但所有这些都是非encryption的纯文本。 什么被认为是一个安全的格式? 还有什么方法/类/技术可以用来存储敏感数据?

ios – Spritekit – 如何计算两个节点之间的距离?

我在屏幕上有两个sknode。 什么是计算距离的最好方法('如同​​乌鸦'的距离types,我不需要一个向量等)? 我有一个谷歌和search在这里,找不到覆盖这个(有关sprite工具包stackoverflow上没有太多的线程)