Tag: 精灵套件

以有限的旋转速度触摸旋转精灵

我试图让我的精灵节点旋转手指触摸。 到目前为止,我可以做到这一点,但我想要的是,我的节点有一个“旋转速度”。 所以我计算angular度的长度,然后设置一个不同的时间来旋转它(如果弧长,这将需要时间…)。 这是我的代码: override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { _isTouched = true for touch in touches { let location:CGVector = touch.locationInNode(self) – miner.position miner.weaponRotation = location.angle() – CGFloat(M_PI_2) } } var wantedRotation: CGFloat { get { return _wantedRotation } set(rotation) { if rotation > CGFloat(M_PI) || rotation < -CGFloat(M_PI) { _wantedRotation = […]

在Sprite工具包中加载.tmx(Tiled Map)?

在iOS 7的Sprite Kit中加载.tmx文件有没有(最好是简单的方法)? 如果没有,有没有其他的select?

如何在GameScene中从ViewController中调用方法

我有一个方法,在我的viewController中有一个自定义的segue,看起来像这样: func gameOver() { performSegueWithIdentifier("GameOver", sender: nil) } 我在GameScene.swift中调用方法如下: GameViewController().gameOver() 我仔细检查了赛格的名字,这是正确的。 每当我在我的GameScene.swift文件中调用此函数,我都会收到SIGABRT消息,我不知道为什么。 我试着只用println()消息调用函数,它工作。 任何意见,为什么发生这种情况,以及如何成功地调用GameScene.swift文件中的方法将不胜感激。 谢谢! PS这里是崩溃日志: 2015-01-28 21:59:46.181 RunawaySquare[95616:3907041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<RunawaySquare.GameViewController: 0x7fe4305c7890>) has no segue with identifier 'GameEnd'' *** First throw call stack: ( 0 CoreFoundation 0x000000010d461f35 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010f39ebb7 objc_exception_throw + 45 […]

Swift / SpriteKit多重碰撞检测?

你好。 我有一个多重碰撞问题。 有一颗子弹击中敌人(红色矩形)。 然后,它++的分数。 有一个螺旋形(红色的圆圈),当敌人(红色矩形)触及它时触发场景结束。 在这种情况下,当敌人撞上螺旋状时,它就起作用,场景结束,我们进入菜单屏幕。 但是,当子弹击中敌人,同样的事情发生,我不知道为什么。 现在,这是我的代码: struct PhysicsCategory { static let None : UInt32 = 0 static let All : UInt32 = UInt32.max static let enemyOne : UInt32 = 0b1 static let enemyTwo : UInt32 = 0b1 static let bullet : UInt32 = 0b10 static let spiral : UInt32 = 0b111 } spiral.physicsBody […]

你怎么能通过SKEffectNode创build一个精灵周围的辉光

我有一个SKSpriteNode ,我想围绕它的边缘蓝色辉光突出的目的。 我猜测,我需要使我的精灵成为一个SKEffectNode的孩子,然后创build/应用某种filter。 更新:我已经调查了这与select的答案的方法相当,并发现SKEffectNode具有相当大的性能,即使你已经设置了shouldRasterize和'没有filter'定义。 我的结论是,如果你的游戏一次需要超过10个移动对象,即使被光栅化,它们也不能涉及SKEffectNode 。 我的解决scheme可能会涉及预先呈现的辉光图像/animation,因为SKEffectNode不会根据我的要求来裁减它。 如果有人对我错过的任何东西有所了解,我会很高兴听到你所知道的任何事情! 我正在接受一个答案,因为它确实实现了我所要求的答案,但是希望将这些注释添加到正在寻找此路线的任何人,以便您了解使用SKEffectNode的一些问题。

SpriteKit:为什么要等一分钟才能更新分数? (迅速)

在一个场景中,我有这样的代码: let defaults = NSUserDefaults.standardUserDefaults() defaults.setInteger(score, forKey: "scoreKey") defaults.synchronize() 当用户与间隙接触时,代码运行: score++ 如果用户遇到障碍,GameOverScene将接pipe。 以下是我为GameOverScene将分数移至场景的代码: let defaults = NSUserDefaults.standardUserDefaults() let score = defaults.integerForKey("scoreKey") scoreLabel.text = "\(score)" 但是,在我的代码中,scoreLabel没有更新文本。 例如,让我们说一个用户得分1并死亡。 当他去世的时候,gameOverScene会出现,并说分数是1.然后,让用户点击重新启动,然后得分5,然后死亡。 在GameOverScene中,scoreLabel会说1。 请帮帮我!

使SKScene的背景透明不工作…这是一个错误?

有没有办法让SKScene的背景透明,并通过透明度来呈现另一个场景。 这个想法是有这样的场景的背景: self.backgroundColor = [SKColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.5f]; 什么可以让背后的景象变暗。 但是这样做是行不通的。 背景呈现完全不透明。 有没有办法做到这一点?

模拟两个Sprite Kit节点的万有引力

我在Sprite Kit中有两个节点,我正在用Swift编写。 我将如何通过重力使节点相互吸引? 另外,我将如何使用他们的群众? 如果一个物体的质量很大,就应该更加吸引人。

在SpriteKit中不断移动

我有一个游戏,我想要向左或向右移动一个SKNode,取决于用户是否触摸屏幕的左侧或右侧。 如何在用户触摸屏幕的同时将节点的运动应用于节点?

在Swift子类中添加便捷初始化器

作为一个学习练习,我试图实现一个SKShapeNode的子类,它提供了一个新的方便初始值设定项,它使用一个数字并构造一个数字宽度和高度的正方形的ShapeNode。 根据Swift书 : 规则1 如果你的子类没有定义任何指定的初始值设定项,它将自动inheritance它的所有超类指定的初始值设定项。 规则2 如果你的子类提供了它所有超类指定的初始化方法的实现,或者按照规则1inheritance它们,或者提供一个自定义实现作为其定义的一部分,那么它将自动inheritance所有的超类方便初始化方法。 但是,下面的类不起作用: class MyShapeNode : SKShapeNode { convenience init(squareOfSize value: CGFloat) { self.init(rectOfSize: CGSizeMake(value, value)) } } 相反,我得到: Playground execution failed: error: <REPL>:34:9: error: use of 'self' in delegating initializer before self.init is called self.init(rectOfSize: CGSizeMake(value, value)) ^ <REPL>:34:14: error: use of 'self' in delegating initializer before self.init is […]