Tag: 精灵套件

在Sprite Kit中执行你自己的物理计算

我试图使用Sprite Kit来设置一些弹性碰撞。 在Sprite Kit物理碰撞问题中我问到了多个物体彼此靠近的情况 我很困惑碰撞的时机。 我试图在-didBeginContact: delegate方法中设置dynamic为NO ,计算最终速度,然后在-didEndContact:将dynamic设置为YES ,然后正确设置速度。 我希望它在碰撞之外是dynamic的原因是因为我想要摩擦/重力等等。 订单/逻辑有什么问题? 我看着-didSimulatePhysics方法,但它似乎不是要走的路。

iOS SKSpriteKit – 由SKLightNode引起的闪烁

我正在使用SKLightNode在我的GameScene中投射阴影。 我正在dynamic添加精灵,这应该投下阴影。 一切工作正常,但是当添加的精灵首先“出现”在场景中时,整个场景在单个框架中缩放到大约50%,然后恢复到正常大小。 这产生了闪烁效应,是太侵入性的而不能被忽视。 在模拟器和物理设备上发生 – 包括ipad和iphone。 有没有其他人有这个问题,如果是的话,有没有办法阻止它发生? 谢谢。

SpriteKit的带有多边形辅助工具的SKPhysicsBody

我想知道是否有一个工具可以用于轻松生成SpriteKit中的复杂物理实体。 我想有一个基于体积的物体与多边形types的形状。 SpriteKit允许使用该方法创build这样的实体: + (SKPhysicsBody *)bodyWithPolygonFromPath:(CGPathRef)path 不幸的是,手动生成这样的path是一项耗时的任务,而且在testing时可能会产生问题。 有一个SpriteHelper应用程序,允许你在易于使用的可视化编辑器中定义身体形状,但是这个应用程序不能导出这里可以使用的path。 它是为cocos2d制作的,它做了很多像纹理包装等我不需要的东西,我不能用于SpriteKit。 有谁知道一个解决scheme,将允许定义CGPath的很容易,甚至可以自动生成它们与alpha通道的PNG图像? 虽然从我的经验来看,自动生成function需要优化,因为当纹理可能具有更复杂的形状时,身体的形状应该尽可能简单。

我如何检测到SKSpriteNode已被触摸

我发现一个类似的问题 ,但我试图检测和识别用户触摸哪个Sprite,我不知道该怎么做。 这是我的变数: var sprites: [[SKSpriteNode]] = [[SKSpriteNode(imageNamed: "a"), SKSpriteNode(imageNamed: "b")], [SKSpriteNode(imageNamed: "c"),SKSpriteNode(imageNamed: "d")]] 这个想法是确定spriteNode,然后将其replace为其他sprite或更改颜色,但我不知道如何使用spriteNodes这个matrix做到这一点,我猜测它的第一步是识别精灵。 我真的很感谢你的帮助! 谢谢!

Sprite Kit iOS 7.1在removeFromParent上崩溃

我已经更新了iPad Air 7.1和Xcode 5.1。 Xcode想要更新我的项目build议设置,我同意。 之后,当我从父节点中删除节点时,我的游戏开始在几个地方崩溃。 这对我来说是一个惊喜 – 在更新之前没有过路口。 我恢复了我的项目,发现Xcode对它做了什么 – 只改变了架构string: 之前: 更新之前的体系结构http://i57.tinypic.com/68v4nr.png 之后: 架构更新后http://i61.tinypic.com/vpeo2a.png 在旧版本中没有崩溃。 如果我删除新版本的arm64支持,没有崩溃。 在模拟器中,新旧版本都没有崩溃。 我的代码应该在哪里注意? 代码堆栈: SpriteKit`SKCSprite::removeSubsprite(SKCSprite*): 0x1859442cc: stp fp, lr, [sp, #-16]! 0x1859442d0: add fp, sp, 0 0x1859442d4: stp x20, x19, [sp, #-16]! 0x1859442d8: sub sp, sp, #16 0x1859442dc: mov x19, x0 0x1859442e0: str x1, [sp, #8] 0x1859442e4: add […]

什么是处理多个SKScenes的最好方法?

我使用默认的新游戏项目做了一个游戏,然后插入一个普通的UIView作为应用程序的介绍场景。 因为使用SKScene将intro“升级”了起来,使用button将原始的gameViewController放到堆栈上。 一旦游戏视图被加载,似乎有点迟缓,所以我假设这是与2完整的skscenes和视图控制器的开销。 我甚至设置了着陆场景暂停,但显然仍然使用内存! 我的问题是,如何使用SKScene作为着陆页(使用它自己的LandingViewController),然后有效地将GameViewController添加到堆栈。 我试着合并2个视图控制器,但这似乎是一个愚蠢的做事方式。 当前设置: LandingViewController |-LandingScene GameViewController |- GameViewScene |- Other Game Classes 应用程序进入LandingScene(和着陆UI精灵)的LandingViewController。 LandingViewController处理触摸事件,如button等。当新游戏被轻敲时,GameViewController被推送(当前使用Segue)和GameViewController进入场景,游戏状态,UI,游戏板等。GameViewController处理触摸事件的场景。 当游戏结束时(点击结束游戏或游戏结束状态),GameViewControllerpopup。 LandingViewController和GameViewController控制他们的animation和点击stream等,所以GameViewController做游戏逻辑,像下一个转弯结束游戏等任何帮助或指针将不胜感激,因为我想这样做的权利!

如何将敌人移动到移动的玩家?

我正在创build一个简单的精灵套装游戏,将玩家置于屏幕的左侧,而敌人从右侧接近。 由于玩家可以上下移动,我希望敌人“巧妙地”调整他们的路线。 我试着在玩家移动的时候删除和重新添加SKAction序列,但是下面的代码会导致敌人根本不显示,可能是因为它只是在每次帧更新时添加和删除每个动作,所以他们从来没有机会移动。 希望得到一些关于创造“聪明”敌人的最佳做法的小反馈,这些敌人将随时转向玩家的位置。 这是我的代码: func moveEnemy(enemy: Enemy) { let moveEnemyAction = SKAction.moveTo(CGPoint(x:self.player.position.x, y:self.player.position.y), duration: 1.0) moveEnemyAction.speed = 0.2 let removeEnemyAction = SKAction.removeFromParent() enemy.runAction(SKAction.sequence([moveEnemyAction,removeEnemyAction]), withKey: "moveEnemyAction") } func updateEnemyPath() { for enemy in self.enemies { if let action = enemy.actionForKey("moveEnemyAction") { enemy.removeAllActions() self.moveEnemy(enemy) } } } override func update(currentTime: NSTimeInterval) { self. updateEnemyPath() }

如何抛出SKSpriteNode?

所以基本上在我的游戏中我需要抛掷或抛出一个对象。 到目前为止,我有一个精灵,它可以拖动,但不能被抛出。 游戏的想法是抛出一个精灵与另一个精灵发生冲突。 我想要我们将调用testNode的精灵,移动用户抛出它的地方 这意味着,当我释放精灵时,我希望它继续沿着我移动的方向前进。 我花了很多年努力工作,但我不能。 我正在使用SpriteKit for iOS 8+。 如果有人可以帮忙,请做。 这是一个我看到的video,但它是与GameSalad这是另一回事。 你可以看看 (如果您需要进一步的联系,请回复) import Foundation; import SpriteKit; class Level:SKScene { TestNode:Test? //Test is a class I made //Removed the update and touches began due to it being irrelevant to what I need help with. override func didMoveToView(view: SKView){ testNode = Fruit(imageNamed: "apple_idle") testNode?.position = […]

在SpriteKit中处理不同的iOS设备分辨率

我在Xcode 6,iOS 8 beta 5中使用了SpriteKit。在iPhone 4S模拟器中,所有的东西都已经布局并且完美运行,但是当切换到5S时,屏幕底部的元素被切断了。 据我了解,iPhone屏幕的左下angular应该是CGPoint(0,0),但是通过打印到控制台的坐标来检查位置之后,我可以点击左下angular的最低点(5, 44)。 在我的场景设置是否有什么错误造成这种情况? 没有对GameViewController文件进行更改,即使在删除GameScene文件后问题仍然存在。 至less有谁能把我指向正确的方向呢?

类没有实现其超类所需的成员

所以我今天更新了Xcode 6 beta 5,注意到我几乎所有的苹果类的子类都收到了错误。 错误状态: 类“x”没有实现其超类所需的成员 这里是我select的一个例子,因为这个类目前很轻,所以很容易发布。 class InfoBar: SKSpriteNode { //Error message here let team: Team let healthBar: SKSpriteNode init(team: Team, size: CGSize) { self.team = team if self.team == Team.TeamGood { healthBar = SKSpriteNode(color: UIColor.greenColor(), size:size) } else { healthBar = SKSpriteNode(color: UIColor.redColor(), size:size) } super.init(texture:nil, color: UIColor.darkGrayColor(), size: size) self.addChild(healthBar) } } […]