Tag: sprite kit

SpriteKit粒子发射器不出现在Xcode编辑器中

我在编辑器中没有出现一个不断出现的粒子效应的问题。 当我第一次创build它们时,一切正常,但一段时间后,它们不再出现。 我只是看到黑色背景,但颗粒不在那里。 我能够处理这个问题的唯一方法是删除节点,并创build一个具有相同属性的新粒子节点,这是耗时和烦人的。 然后过了一段时间,新的粒子节点也会发生同样的情况。 任何人都经历过这个?

swift 2 sprite-kit中的多行标签?

我需要能够在swift 2 sprite-kit中为游戏制作多行标签。 文本需要环绕而不是离开屏幕。 贝娄是我有,但我不知道该怎么做 import Foundation import UIKit import SpriteKit class JDQuotes: SKLabelNode { var number = 0 init(num: Int) { super.init() if num == 1 { text = "\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. laborum.\"" } } required init?(coder aDecoder: […]

将UIButton的属性赋给SpriteKit中的SKSpriteNode

我想知道是否有一种方法来给一个UIButton的属性,例如一旦它被按下就变暗button,…给SKSpiteNode因为SKSpiteNode有更多的自定义,因为我使用的是SpriteKit 。 我见过其他1个这样的问题,但没有任何答案。 这里是我必须创buildSKSpriteNode和检测触摸它的代码: import SpriteKit class StartScene: SKScene { var startButton = SKSpriteNode() override func didMoveToView(view: SKView) { startButton = SKSpriteNode(imageNamed: "playButton") startButton.size = CGSize(width: 100, height: 100) startButton.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 – 50) self.addChild(startButton) } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { /* Called when a […]

如何在sprite套件中用swift旋转sprite

嗨,我的问题是关于两个精灵的旋转。 当我触摸屏幕的右半边时,旋转开始并移动sprite2和sprite3。 如果我触摸屏幕的左半边,则旋转停止,因为速度= 0。如果再次触摸左半部分,则开始旋转。 但是,如果触摸与当前旋转方向相对应的屏幕的一半,则速度被复制。 我希望能够改变旋转的方向,但速度要保持不变。 video显示问题:http: //youtu.be/HxLwl1QZiNM import SpriteKit class GameScene: SKScene { let sprite = SKSpriteNode(imageNamed:"bWhite") let sprite2 = SKSpriteNode(imageNamed:"bBlue") let sprite3 = SKSpriteNode(imageNamed:"bRed") let circle = SKSpriteNode(imageNamed:"bCircle") override func didMoveToView(view: SKView) { /* Setup your scene here */ backColor = SKColor(red: 0, green: 0, blue: 0, alpha: 1) self.backgroundColor = backColor sprite.setScale(1.25) […]

Swift – 如何从移动到另一个时从场景中删除滑动手势?

所以我的游戏使用滑动手势,在我didMoveToView()函数我有这些手势初始化: let swipeRight = UISwipeGestureRecognizer() swipeRight.direction = UISwipeGestureRecognizerDirection.Right self.view?.addGestureRecognizer(swipeRight) let swipeLeft = UISwipeGestureRecognizer() swipeLeft.direction = UISwipeGestureRecognizerDirection.Left self.view?.addGestureRecognizer(swipeLeft) let swipeUp = UISwipeGestureRecognizer() swipeUp.direction = UISwipeGestureRecognizerDirection.Up self.view?.addGestureRecognizer(swipeUp) let swipeDown = UISwipeGestureRecognizer() swipeDown.direction = UISwipeGestureRecognizerDirection.Down self.view?.addGestureRecognizer(swipeDown) 问题是,当我移动到我的GameOver场景,我刷卡,它崩溃我的应用程序。 我注意到有人发布了类似的东西,并得到了这个答案 override func willMoveFromView(view: SKView) { for recognizer in self.view.gestureRecognizers! { self.view.removeGestureRecognizer(recognizer) } } 仍然不太清楚在切换到游戏之前如何实现这个和/或从场景中移除手势。 谁能帮忙?

在TextView中查找CGPoint子string的位置

我正在寻找创build一个SpriteKit节点定位在一个UITextView中的子string的位置。 我将如何检索CGPoint位置,以便我可以在那里定位SKNode? let textFont = [NSFontAttributeName: UIFont(name: "GillSansMT", size: 30.0) ?? UIFont.systemFontOfSize(18.0)] attrString1 = NSMutableAttributedString(string: "My name is Dug.", attributes: textFont) textShown1 = CustomTextView(frame: CGRectMake(CGRectGetMidX(self.frame), 175 + (90 * paragraphNumber), CGRectGetWidth(self.frame) – 80, CGRectGetHeight(self.frame)-400)) textShown1.attributedText = attrString1 self.view?.addSubview(textShown1)

一个项目是否必须被创build为一个精灵套件,或者是否可以添加框架?

我正在退后一步学习我制作的2D游戏的sprite套件,而不是使用UIKit。 在我所经历的所有教程中,他们已经将新项目创build为Sprite-Kit,而不是单一视图。 只是想知道如果我将不得不重新创build我的游戏,或者如果我可以简单地将sprite套件框架添加到我现有的项目? 谢谢。

closuresSKScene后,内存仍然很高

我使用dispatch_once NSObject来创build数据指针。 所以所有的游戏资产指针都是在主视图控制器出现的时候创build的。 为了玩游戏,用户点击UIViewController上对应于特定级别的UIButton 。 我把它称为LevelSelectionController。 游戏结束后,用户将点击一个标签( SKLabel )。 所有的动作和节点都将被删除。 [self removeAllActions]; [self removeAllChildren]; [self removeFromParent]; 此外,特定级别的SKScene子类将委派用户返回LevelSelectionController给展示游戏SKView的视图控制器的任务如下。 – (void)closeScene { SKView *spriteView = [[SKView alloc] init]; [spriteView presentScene:nil]; [self.navigationController popViewControllerAnimated:YES]; } 我唯一的问题是当用户离开游戏场景(SKScene)时内存仍然很高。 游戏需要大量资产。 所以当游戏开始时,内存使用量将跳到200 MB。 当用户返回到原始级别select视图控制器时,根据活动监视器 ,游戏模拟器仍然消耗200 MB。 当用户input不同的级别时,内存使用量将会跳过另外10 MB。 那么一旦用户离开SKScene,我怎么能释放上一场比赛的内存呢? 我正在使用ARC。 Xcode版本是5.1。 开发目标是iOS 7.1。 感谢您的帮助。 – 编辑1 – 我太愚蠢。 我知道问题是什么 当我closures这个场景时,我正在创build一个新的SKView,然后我将它设置为零来摆脱当前场景。 有用。 但是,这不应该是这样做的方式。 相反,我需要在呈现之前将当前的SKView设置为一个variables。 […]

iOS Sprite Kit为什么我不能使用白色重复colorizeWithColor?

我正在尝试使用非缩放方法select精灵节点的方法。 我最喜欢的一种方法是用白色着色,从而突出显示节点。 但是,我似乎无法多次使用白色行为复制着色。 为什么我不能多次使用白色使用colorizeWithColor ? 这两个方法调用是相同的,除了使用的颜色。 如果我使用红色,灰色等,节点响应每次触摸闪烁。 但是,如果我使用白色,它只有一次,那么再也没有响应过。 [self runAction:[SKAction colorizeWithColor:[SKColor lightGrayColor] colorBlendFactor:0.8 duration:0.6] completion:^{ [self runAction:[SKAction colorizeWithColorBlendFactor:0.0 duration:0.4]]; }]; [self runAction:[SKAction colorizeWithColor:[UIColor colorWithWhite:0.99 alpha:1.0] colorBlendFactor:0.8 duration:0.6] completion:^{ [self runAction:[SKAction colorizeWithColorBlendFactor:0.0 duration:0.4]]; }];

将SKSpriteNode添加到SKEffectNode时,金属崩溃

– [MTLDebugRenderCommandEncoder setScissorRect:]:2028:failed assertion(rect.x(0)+ rect.width(1080))(1080)must be <= 240' 使用下面的代码将一个简单的SKSpriteNode添加到SKEffectNode时,我得到了这个崩溃 SKSpriteNode *warpSprite = [SKSpriteNode spriteNodeWithImageNamed:@"art.scnassets/symbol.png"]; SKEffectNode *entryEffectsNode = [[SKEffectNode alloc] init]; [entryEffectsNode addChild:warpSprite]; [self addChild:entryEffectsNode]; 我没有在我的项目中的任何其他地方触及这些节点,当我更改精灵的值(必须<=值)在错误内更改。 编辑:我已经用一个简单的spriteNodeWithColor:Size:replace了精灵图像,并且(<= value)总是精灵的两倍大小。 另外应该注意的是,SKScene正被用作SceneKit场景中的叠加层。 我用下面的代码创build了一个单独的SKScene,这仍然导致相同的错误。 @implementation testScene -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { SKSpriteNode *testSprite = [SKSpriteNode spriteNodeWithColor:[SKColor purpleColor] size:CGSizeMake(100, 100)]; SKEffectNode *testEffect = [[SKEffectNode alloc] init]; [testEffect addChild:testSprite]; […]