Tag: 精灵套件

停止SKSpriteKit点击冲动

我试图在我的游戏中创build一个暂停button。 在你点击屏幕的时候,它会在移动器spriteNode上施加一个冲动。 问题是,当我点击暂停button时,它仍然应用冲动。 我怎样才能创build一个暂停button,而不创build冲动也。 我试着改变if语句,如果然后做最后的冲动部分的其他部分,但这不会工作。 touchBegan方法: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; //if fire button touched, bring the rain if ([node.name isEqualToString:@"repeat"]) { SKTransition *reveal = [SKTransition fadeWithDuration:2.0 ]; MyScene *newScene = [[MyScene alloc] initWithSize: CGSizeMake(self.size.width,self.size.height)]; // Optionally, insert code to […]

按照path反转

我正在做一个精灵来绕轨道,为此我做了一个精灵之后的path: let dx1 = base1!.position.x – self.frame.width/2 let dy1 = base1!.position.y – self.frame.height/2 let rad1 = atan2(dy1, dx1) path1 = UIBezierPath(arcCenter: circle!.position, radius: (circle?.position.y)! – 191.39840698242188, startAngle: rad1, endAngle: rad1 + CGFloat(M_PI * 4), clockwise: true) let follow1 = SKAction.followPath(path1.CGPath, asOffset: false, orientToPath: true, speed: 200) base1?.runAction(SKAction.repeatActionForever(follow1)) 这是有效的,精灵开始围绕这一点的轨道。 事情是,当用户触摸屏幕,我想让精灵开始逆时针旋转。 为此,我写了相同的代码顺时针旋转,但编辑最后一行: base1?.runAction(SKAction.repeatActionForever(follow1).reversedAction()) 但问题是,虽然它逆时针旋转,精灵图像翻转水平。 我能做些什么来避免这种情况? 或者还有什么其他的方式来通过一个点的轨道精灵?

iAd的SpriteKit中的Swift

我正在研究一个应用程序,并希望包括iAd的。 我已经设法添加横幅广告,他们工作得很好。 不过,我想要一个更大的添加,填充大部分的屏幕,但不是全屏。 我使用Benzene的问题代码添加了adBanner, 并给出了erdekhayser的解决scheme。 Apple iAd文档(第3页) 上面引用的链接来自苹果文档,苹果将iAd称为MREC广告。 这是我想要的。 我不能解决如何创build和添加一个。 我曾尝试调整adBanner的大小,但仍然无法弄清楚。 任何帮助,将不胜感激 这是迄今为止的代码: import UIKit import SpriteKit import iAd import Twitter var adBannerView: ADBannerView! class GameViewController: UIViewController, ADBannerViewDelegate { var scene: GameScene! func loadAds() { adBannerView = ADBannerView(frame: CGRectZero) adBannerView.delegate = self adBannerView.hidden = true view.addSubview(adBannerView) } override func viewDidLoad() { super.viewDidLoad() // Configure the […]

iPhone 5s SpriteKit绘图怪异

据我所知,iPhone 5s的像素分辨率为640 x 1136,分辨率为320 x 568(为了与非Retina设备兼容)。 当我使用SpriteKit时,问题/混乱/怪异似乎出现了。 例: 我从左下angular(0,0)到右上angular(宽度,高度)绘制一条线。 结果是这条线几乎中途被吸引了。 而事实上,当我打印出来的屏幕尺寸,它应该是320×568。所以我决定从(0,0)到(宽* 2,高* 2)绘制。 当然,这个打印出640 x 1136。 所以奇怪的是,即使我正在从一个对angular线angular落画angular,但实际上并不是从一个angular落到另一个angular落。 笔记: – I'm getting the width & height values from self.value.frame.size. – The diagonal line seems to draw just fine using any of the iPad simulators. 有什么想法发生在这里?

如果在另一个节点“后面/下面”,我如何触摸节点?

我创build了一个游戏,并且有一个SKLabelNode节点告诉用户他目前的分数是多less。 SKSpriteNode下面还有SKLabelNode其他游戏节点。 即使我有userInteractionEnabled = true直接在labelnode下面的时候我也无法点击这些spritenodes。 当我点击标签时,下面的print代码从不打印任何东西。 有人可以帮我吗? 注意:我的实际精灵实际上是SKSpriteNode一个子类,不知道它是否重要。 let label = SKLabelNode() let sprites = SKSpriteNode() label.text = "\(score)" label.zPosition = 5 label.userInteractionEnabled = true label.name = "label" sprites.zPosition = 4 sprites.name = "sprites" override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { /* Called when a touch begins */ for _ in touches { let […]

Swift 3.0用SpriteKit保存得分

我试图保存一个“highScore”整数,该应用程序在使用SpriteKitclosures后仍然存在。 而已。 只有一个单一的屏幕上的整数,我将最终与我的游戏设置,无论新的分数是否高于保存的分数。 我知道有很多选项已经在这个stackoverflow,但是他们都是Swift版本低于3.0。 他们使用一些方法和内置的function,我不明白作为一个初学者。 在试图将所有这些选项转换为Swift 3.0并失败之后,我希望有人能够向我展示一些示例代码如何执行此操作。 我会很高兴回答任何进一步的问题。

我怎样才能覆盖SKScene在Swift的SCNScene?

在互联网上有一些覆盖教程,在某些时候都使用overlaySKScene 。 这在某种程度上是不可能在我的项目中,因为(我猜)我的视图不使用SCNView的构造函数( overlaySKScene是其中的一部分)。 在ViewController的viewDidLoad中,基本上只有MainScene被创build: viewDidLoad() { self.sceneView = MainScene(view: self.view)) } …在这里(注:SCNScene而不是SCNView): class MainScene: SCNScene, SCNPhysicsContactDelegate {… init(view:UIView) { scnView = view as! SCNView super.init() scnView.scene = self; (…) } 现场是完全创build的,现在我想覆盖SKScene。 有谁知道如何?

主要的Xcode 7雪碧套件地图集错误

所以今天我决定开始在El Capitan和iOS 9上testing我的游戏。这是我在业余时间工作了近2年的一个大型项目。 所以我把我的代码移植到Swift 2.0中,点击运行button,并且祈祷Apple没有破坏Sprite Kit(就像他们过去一样, 一 , 二 , 三 , 四 ,甚至不让我开始形状节点…)。 所以我的游戏启动了,你知道些什么 – 我所有的节点都是错误定位的,以及我的animation纹理。 其他一些小错误,如抽签计数没有显示,但是这些小错误,希望他们也将被固定。 所以我开始debugging,最终我能够发现大多数问题都与我的地图集中的节点没有正确定位有关。 所以我只用一个节点创build了一个示例项目,如下所示。 你可以在图中看到我将节点锚点设置为(0,0),并将位置设置为(0,0)。 场景的定位点也是(0,0)。 我打印出所有这些值来validation它们是正确的。 你也可以看到它在编辑器中正确绘制。 但是,当我启动游戏时,我得到以下内容: 您可以看到该节点绘制不正确。 它的位置是(0,0),但它被绘制偏移。 没有我的场景不缩放,它匹配视图的大小,并设置ResizeFill。 我在El Capitan和iOS 9上都遇到了这个问题。有趣的是,图像包含的透明像素越多,问题就越明显。 从编辑器屏幕截图中可以看到,我的图像包含许多透明像素,因为我想清楚地显示该错误。 如果我使用透明度较低的像素,节点的偏移量将会减less。 如果我不使用地图集,则节点如下所示正确绘制。 不过,我显然希望使用地图集,以便批量渲染节点。 我已经在雷达上提交了这个bug。 有没有人find解决这个问题,不涉及不使用地图集?

SKScene iPad高度宽度逆转

我正在尝试在一个只支持横向模式的iPad应用程序中用瓦片填充我的SKScene。 在场景中,我发现h&w是这样的: int h = [UIScreen mainScreen].bounds.size.height; int w = [UIScreen mainScreen].bounds.size.width; 不幸的是,返回的尺寸与他们所需要的相反。 在视图控制器或视图的内容中讨论这个问题有很多的话题,解决scheme似乎是在viewWillAppear而不是viewDidLoad中检测屏幕大小。 但是,这似乎并不是SKScenes的有效解决scheme。 有什么build议么?

致命错误:对类使用未实现的初始化'init(size :)'

我正在不同的设备上testing我的应用程序,并意识到精灵的移动是非常不一致的(与其他设备相比,在某些设备上运行的速度要快得多)。 我发现这篇文章,并按照说明,并从我所有的SKScene s中删除大小参数,然后我得到了错误: fatal error: use of unimplemented initializer 'init(size:)' for class 'SuperGame.PosterScene' 请参阅下面的PosterScene类和调用它的PosterScene类。 PosterScene class PosterScene: SKScene { override init(){ super.init() let posterImage = SKSpriteNode(imageNamed: "poster") posterImage.position = CGPoint(x: self.frame.midX, y: self.frame.midY) self.addChild(posterImage) let sequence = SKAction.sequence([ SKAction.wait(forDuration: 3.0), SKAction.run({ self.changeToMainMenuScene() }) ]) self.run(sequence) } func changeToMainMenuScene () { let mainMenuScene = MainMenuScene() self.view!.presentScene(mainMenuScene) […]