Tag: 精灵套件

在SpriteKit的SKScene和SKSpriteNode中接收触摸事件

用SKSpriteNode的button构build一个UI。 button精灵接收触摸事件来处理特殊效果(弹性缩放效果)但是我需要SKScene同时处理触摸事件来处理UI导航逻辑。 (精灵和场景)如何处理这些触摸事件?

无法更改SKView backgroundColor

这是与iOS 9.我无法设置一个SKView的背景颜色,它总是呈现与默认的灰色。 有没有解决的办法? let frame = CGRect(x: 0, y: 0, width: 200, height: 100) let spriteView = SKView(frame: frame) spriteView.backgroundColor = .blueColor() self.view.addSubview(spriteView) 当上面的代码运行时,SKView是灰色的而不是蓝色的。 我真正想要能够做的是设置allowsTransparency = true但我不能让这个工作,如果我不能改变背景颜色clearColor 。 其他人遇到这个? 任何解决方法? 更新 即使有@达尼洛的build议,这仍然显示为灰色: let frame = CGRect(x: 0, y: 0, width: 200, height: 100) let spriteView = SKView(frame: frame) spriteView.backgroundColor = .clearColor() spriteView.allowsTransparency = true spriteView.opaque […]

SpriteKit。 与重力相反的applyForce混淆

我使用下面列出的代码作为SpriteKit的一个实验。 我所做的是施加相同数量的力作为重力效应,但是使用反向平行向量(身体质量被设置为1.0)。 该function通过更新function在每一帧上执行。 我希望物体不会像应用力和重力相互补偿一样移动。 -(void)didMoveToView:(SKView *)view { self.anchorPoint = CGPointMake(0.5, 0.5); SKShapeNode *node = [SKShapeNode shapeNodeWithRect:CGRectMake(0,0,WIDTH, HEIGHT)]; node.position = CGPointMake(30, 280); node.strokeColor = [SKColor whiteColor]; node.fillColor = [SKColor purpleColor]; node.name = @"node"; CGSize sz = node.frame.size; node.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sz center:[GameScene Center]]; node.physicsBody.restitution = 0.3; node.physicsBody.mass = 1.0; node.physicsBody.affectedByGravity = YES; self.figure = node; [self […]

如何创build转换到SKAction?

我创build的function,每10秒更改我的背景颜色,我想添加转换时,它改变了背景的颜色。 游戏场景: let wait = SKAction.waitForDuration(10) let block = SKAction.runBlock({ [unowned self] in self.backgroundColor = UIColor.randomColor() }) let sequence = SKAction.sequence([wait,block]) runAction(SKAction.repeatActionForever(sequence), withKey: "colorizing") 感谢帮助!

不能将SKNode强制转换为SKNode的子类

我从一个函数返回一个SKNode ,我需要把它转换成一个自定义的SKNode 。 我得到错误Cannot assign value of SKNode的Cannot assign value of to type GroundNode。 如果我强制转换,它会编译,但在运行时失败。 我错过了什么? // Custom node class class GroundNode: SKNode { weak var entity: GKEntity! } // Return node function func returnNode() -> SKNode { … return node } // Where I am getting the error func setupNode() { var ground: GroundNode […]

SKAction scaleXTo:-1

我想用SKAction *mirrorDirection = [SKAction scaleXTo:-1 y:1 duration:0.0];镜像我的SKSpriteNode SKAction *mirrorDirection = [SKAction scaleXTo:-1 y:1 duration:0.0]; 但是每次我做的时候,这个精灵的物理体就会变得混乱起来,从屏幕上掉下来。 我在精灵下面有几个物体(楼层),它们落在所有的物体上,好像它们不在那里一样。 这只发生在我镜像精灵的时候。 有人知道怎么修这个东西吗? 更新:作为一个答案build议重置物理机构不幸的是没有解决这个问题。 似乎只有物理机构的接触部分出现故障。 当小家伙像一块石头一样落下时,引力仍然有效果。 我也尝试重新由self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)]; 在self.xScale = -1; 但是这也没有解决这个问题。

iAds和SpriteKit:SKScene仅在设备上全屏退出时冻结

我的问题类似于这个iAd冻结游戏的场景 ,但我觉得这个问题还没有解决。 我在它自己的视图中叠加了一个iAd,这样它就不会影响SKScene的大小。 横幅function正常,但在全屏退出SKScene冻结。 应用程序仍在接收触摸input,通过NSLogs进行validation。 如果我再次单击横幅并退出全屏,SKScene的第二次不再冻结。 为什么? 这很重要,只有在设备(iPhone5)上进行testing才会发生。 在模拟器上,没有问题。 有没有人想出这个难题? 问题是类似于这个postiAD视图冻结广告closures,但解决scheme:'删除self.canDisplayBannerAds = YES'不适用于我。 虽然我已经尝试以编程方式创build它,但是我已经通过故事板实现了iAd,这与此无关。 问题也在这里iAd冻结应用程序iPhone 5 [s] [c]但解决scheme缺乏迷信,仍然是一个谜。 – 通过self.canDisplayBannerAds和originalContentView实现带有SpriteKit的iAd的替代解决scheme能够正常工作和正常工作,但由于它与SKScene( Spritekit iAds 与场景大小相混淆 )共享视图时产生了一个大小/缩放比的问题,我愿意用烟雾和镜子作为最后的手段隐藏丑陋的resize的animation/效果。 – 如果有人知道最好的方式来执行一个iAd与SpriteKit没有大小的问题或冻结设备上的问题,请让我知道。

在spriteKit swift中使用waitForDuration()

我想在生成节点之间等待2秒钟。 所以我写了这个代码: override func update(currentTime: CFTimeInterval) { let releaseNodes = SKAction.sequence([SKAction.runBlock(self.generateNode), SKAction.waitForDuration(2)]) self.runAction(releaseNodes) } 但它不起作用。 它是疯狂的生成节点。 (如20秒)。 我该如何处理? 任何人都可以帮我吗? 编辑:这是self.generateNode块 func generateNode(){ var node: SKSpriteNode = SKSpriteNode(imageNamed: "node") fish.anchorPoint = CGPoint(x:CGFloat(-0.5),y:CGFloat(-0.2)) fish.position = CGPoint(x:CGFloat(10),y:CGFloat(30)) var move = SKAction.rotateToAngle(CGFloat(3.14), duration: NSTimeInterval(1)) var remove = SKAction.removeFromParent() var seq = SKAction.sequence([move, remove]) node.runAction(seq) self.addChild(node) }

如果像素是透明的,我如何制作一个不响应触摸的SKSpriteNode?

我正在用swift编写的sprite工具包为iOS创build游戏。 我有一堆SKSpriteNode在可以拖动的屏幕上。 他们是一个人,一个苹果,一本书等各种形状。问题是,人在苹果前面,但你可以通过人像(png)中的透明像素看到人后面的苹果。 当你去触摸苹果来移动它时,人会因为那些透明的像素而不是苹果而被选中。 如果像素是透明的,我如何制作一个不响应触摸的SKSpriteNode?

将SpriteNode与SpriteKit Swift3上的表面alignment

我试图alignment一个SKSpriteNode来匹配碰撞的PhysicsBody的“撞击表面”。 我正在做的是在Cube上拍摄SpriteNode。 我已经设置了碰撞和节点附件(固定关节)。 一切正常,但我需要find一种方法来旋转spriteNode匹配击中表面,你可以看到下面: 请注意,多维数据集可以旋转等,所以我们并不总是有一个固定的旋转值在多维数据集。 任何想法如何解决这个? 在此先感谢/马格努斯