Tag: sprite kit

SKNode.nodesAtPoint的顺序是否有保证?

SKNode有一个方法nodesAtPoint ,它返回与给定点相交的一组子节点。 这样的数组中的元素的顺序是确定性的(例如通过绘制顺序)? 我在文档中找不到答案,所以答案可能是“不”,但是我想validation一下。

如何从SWIFT中的SKSpriteNode创buildCGPath

我有一个SKSpriteNode与电平生成器创build。 我需要使用CGPath创build完全相同的形状。 self.firstSquare = childNodeWithName("square") as! SKSpriteNode var transform = CGAffineTransformMakeRotation(self.firstSquare.zRotation) let rect = CGRect(origin: self.firstSquare.position, size: self.firstSquare.size) let firstSquareCGPath:CGPath=CGPathCreateWithRect(rect, &transform) print(self.firstSquare.position) => firstSquare position(52.8359451293945,-52.9375076293945) 为了检查我的CGPath是否已经创build,我用CGPath创build了一个SKShapeNode: let shape:SKShapeNode=SKShapeNode(path:path) shape.fillColor = self.getRandomColor() addChild(shape) print(shape.position) =>形状位置(52.8359451293945,-52.9375076293945) 结果不是我所期望的。 所以我不知道我的CGPath是否是错误的,或者是当我在SKShapeNode中转换它,我失去了初始的精灵属性。 为了理解为什么我需要这样做,请阅读这个堆栈 编辑1,2 我补充说: shape.position = self.firstSquare.position 我得到了: 编辑3: 我上面更新了我的解释,现在我的firstSquare的定位点(0.5,0.5)

使用SKSpritenodes和纹理

我正在尝试编写function,允许用户将“鬼”更改为不同的图像。 这是我的代码: Ghost = SKSpriteNode(imageNamed: "Ghost17") Ghost.size = CGSize(width: 50, height: 50) Ghost.position = CGPoint(x: self.frame.width / 2 – Ghost.frame.width, y: self.frame.height / 2) Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4) Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score Ghost.physicsBody?.affectedByGravity = false Ghost.physicsBody?.isDynamic = true Ghost.zPosition = 2 if […]

将一个自定义SKShader应用到SKScene中,使用Swift将iOS 8 SpriteKit中的整个渲染场景进行像素化

我正在尝试在SKScene上创build一个全屏的像素化效果。 我了解到,应该有两个select来做到这一点: 使用使用GLES 2.0的自定义SKShader 。 使用核心图像filter。 我试图添加一个自定义的SKShader应该修改整个屏幕像素化。 我不确定如果可能,但SKScene ( SKScene的子类)的SKEffectNode表明: SKEffectNode对象将其子级渲染为缓冲区,并可select将Core Image滤镜应用于此渲染输出。 像GameScene : SKScene一样,可以将SKShader分配给SKScene GameScene : SKScene : override func didMoveToView(view: SKView) { let shader = SKShader(fileNamed: "pixelation.fsh") self.shader = shader self.shouldEnableEffects = true } …但似乎呈现的缓冲区不作为u_texture传递给GLES: void main() { vec2 coord = v_tex_coord; coord.x = floor(coord.x * 10.0) / 10.0; coord.y = floor(coord.y * […]

UIVisualEffectView创build一个灰色框,而不是模糊

我正在使用UIVisualEffectView模糊SpriteKit中的屏幕部分,如下所示: let blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) let UIEffectView:UIVisualEffectView = UIVisualEffectView(effect: blur) UIEffectView.frame = CGRectMake(0, 0, frame.width, frame.height * 0.15) self.view?.addSubview(UIEffectView) 但它似乎是一个灰色阴影区域,而不是模糊。 奇怪的是,当GameCenter通知在开始时显示“欢迎回来,(玩家)”时,它会模糊,但是一旦通知消失,它就会变成一个灰色框。 这同样适用于当您进入iOS9中的多任务视图时,预览部分会变模糊,但是当您进入应用程序时,它会再次成为灰色阴影区域。 任何想法为什么发生这种情况? 它在模拟器以及物理硬件中也是如此。

SKAction序列暂时延迟(初始延迟?)

所以在我build立的游戏中,我想重复一个动作,但是我希望它有一个最初的延迟。 举例来说,这个动作在用户开始游戏之后会执行三秒,但是在它第一次执行之后,不会有三秒的延迟。 我能做些什么来解决这个问题? 提前致谢!

触摸移动方法中,SKSpriteNode大小改变时,物理主体大小不会改变

我试图创build一个弹簧发射器,当在场景中移动触摸时,弹簧将会像触摸一样向下拖动,然后在触摸结束方法上popup弹簧上方的项目。 为此,我改变了触摸移动方法SKSpriteNode的大小和位置 – launcher.position = CGPointMake(frame.size.width*0.97, launcher.position.y-1) launcher.size = CGSizeMake(frame.size.width*0.05, launcher.frame.size.height-2) 但SKSpriteNode的物理体没有改变它是这样的 – 请帮助..如果一个SKSpriteNode的变化物理体比它滞后太多.. let springTexture = SKTexture(imageNamed: "spring-wire") launcher.physicsBody = SKPhysicsBody(texture: springTexture, size: launcher.size) launcher.physicsBody?.dynamic = false 创build一次后,有没有办法改变物理体的大小?

iOS SpriteKit如何使用应用程序捆绑包中的文件夹创build节点?

我试图创build一个随机怪物的精灵,我的图像存储在主包中引用的文件夹中。 NSString* bundlePath = [[NSBundle mainBundle] bundlePath]; NSString* resourceFolderPath = [NSString stringWithFormat:@"%@/monsters", bundlePath]; NSArray* resourceFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:resourceFolderPath error:nil]; NSInteger randomFileIndex = arc4random() % [resourceFiles count]; NSString* randomFile = [resourceFiles objectAtIndex:randomFileIndex]; SKSpriteNode* tile = [SKSpriteNode spriteNodeWithImageNamed:randomFile]; 当我运行我的代码上面,我得到这个错误 SKTexture: Error loading image resource: "random_monster.png" 如果我从主包中引用图像,代码将起作用。 我怎样才能从应用程序包中的文件夹中使用随机图像,并将其传递给SKSpriteNode?

如何渲染一个SKNode到UIImage

只是玩弄SpriteKit,并试图找出如何捕捉到一个SKNode'抢'成UIImage。 使用UIView(或UIView子类),我已经使用视图的layer属性来渲染成graphics上下文。 例如。 #import <QuartzCore/QuartzCore.h> + (UIImage *)imageOfView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, 0.0f); CGContextRef context = UIGraphicsGetCurrentContext(); [view.layer renderInContext:context]; UIImage *viewShot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewShot; } SKNode不是UIView的子类,因此看起来并不支持图层。 任何想法,我可能会去渲染一个给定的SKNode到UIImage?

CGPointMake在Swift中

如何在Swift使用CGPointMake ? 有没有相当于它? 我收到一个错误: 使用未parsing的标识符“CGPointMake” 基本上,我试图给一个Sprite Kit节点分配一个位置,并不知道如何在Swift中做到这一点。 class PlayerSpaceship: Spaceship { func launchMissile() { var missile = Missile.playerMissile() // This line gives above mentioned error. missile.position = CGPointMake(0.0, 0.0) } }