Tag: 精灵套件

Sprite Kit – 当精灵离开屏幕时,移动场景和相机与精灵

我正在尝试创build一个从屏幕上延伸一定距离的场景,并且我希望相机保持以播放器节点为中心。 当玩家到达屏幕的顶部时,我希望底部节点消失在屏幕边界之下并且场景的新的屏幕外部分变得可见。 像马里奥! 我创build这样的场景大小: CGSize screenSize = CGSizeMake(skView.bounds.size.width, skView.bounds.size.height + (skView.bounds.size.height/3));//+ (skView.bounds.size.height/3) scene = [GameScene sceneWithSize:screenSize]; 然后,将所有的节点添加到WorldNode中,就像这个问题一样。 我已经修改它是: – (void)didSimulatePhysics { CGFloat margin = self.size.height/3;// previously defined // make sure the cat's position is defined in scene coordinates CGPoint catPosition = [self convertPoint:cat.position fromNode:cat.parent]; if (catPosition.y > (self.size.height – margin)) { CGPoint worldPosition = worldNode.position; […]

使用Sprite Kit和Swift从另一个场景影响一个孩子

我试图教自己的Sprite Kit和Swift。 我想要做的是从ArcheryScene.sks文件访问一个子节点,并从ArcheryScene.swift文件中影响该子节点。 例如:在我的ArcheryScene.swift文件中,我添加了这一行代码: let scene = SKScene(fileNamed: "ArcheryScene") 。 这编译罚款,当我说println(scene) ,它正确打印我想要打印的场景,这就是我知道ArcheryScene.sks是真正在我的scenevariables。 在此之后,我通过添加以下代码行来访问该场景中的一个孩子: let ballChild = scene.childNodeWithName("Ball") 。 当我使用println(ballChild) ,它打印正确的孩子,让我知道variables确实包含在ArcheryScene.sks中的Ball子。 现在我的问题… 为什么我不能在我的ArcheryScene.swift文件中这样说: ballChild?.physicsBody?.affectedByGravity = false 要么 ballChild?.position.x = self.frame.size.width / 2 要么 let move = SKAction.moveByX(40, y: 0, duration: 5.0) ballChild?.runAction(move) 所有这些代码都可以毫无错误地进行编译,但是当我运行游戏时,Ball并没有受到任何影响。 此外,如果我运行ballChild?.position.x = self.frame.size.width / 2 ,然后打印ballChild位置,它将显示为x:512,这应该是,但仍然当我运行游戏中,Ball不受影响。 这真是令我困惑,我只想弄清楚发生了什么。 任何build议,将不胜感激,谢谢。

设置SKSpriteNode的可触摸区域

有没有SKSpriteNode的属性,让你手动设置其可触摸区域? 我有一个PNG纹理的精灵,它似乎只是检测PNG的不透明部分触摸。 所以一个大的空白canvas里面的一个小圆圈实际上有一个很小的可触摸区域。

Sprite Kit:更改DidBeginContact中的zRotation

SKSpriteNode *_node; – (void)didBeginContact:(SKPhysicsContact *)contact { _node.alpha = 0.5; //this works _node.zRotation = 0.5; // this doesn't work } 任何想法为什么zRotation不起作用? 我试图做NSLog ,它给出了正确的zRotation但屏幕没有显示。

在sprite工具包中使用更新函数的animation调用方法

所以我有这个方法: -(void)levelLabel { SKLabelNode *levelOne = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; levelOne.fontSize = 25; levelOne.fontColor = [SKColor whiteColor]; levelOne.text = @"Level 1"; levelOne.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2); [self addChild:levelOne]; SKAction *stageNumberIn = [SKAction fadeInWithDuration:1.0]; SKAction *stageNumberOut = [SKAction fadeOutWithDuration:1.5]; SKAction *remove = [SKAction removeFromParent]; SKAction *sequence = [SKAction sequence:@[stageNumberIn, stageNumberOut, remove]]; [levelOne runAction:sequence]; } 我试图在“update”函数中调用它: -(void)update:(CFTimeInterval)currentTime { [self levelLabel]; […]

在iOS游戏应用程序和Swift中使用AdMob插页式广告

好的,我已经花了好几天的时间来做这件事了。 我已经通过admob的教程,YouTube,堆栈交换,一切,我无法find解决我的问题。 我正试图在我的iOS游戏应用程序中实施admob的插页式广告。 代码编译,构build,运行,游戏播放,但广告不会出现。 这是我的GameViewController.swift import UIKit import SpriteKit import GoogleMobileAds class GameViewController: UIViewController, GADInterstitialDelegate { //AD STUFF—————————–vBELOWv———————————————- //AD STUFF—————————–vBELOWv———————————————- var interstitialAd: GADInterstitial? func createInterstitialAd() -> GADInterstitial { let request = GADRequest() let interstitial = GADInterstitial(adUnitID: "ca-app-pub-******") request.testDevices = [kGADSimulatorID, "C966DEAC-A2FD-4FBA-80B5-802B7E394C6D", "F3E1897A-3556-4704-9C85-3D70B4672F44","090DCEE5-6B1C-4DFB-83CE-FE800A242008", "1B93E43B-E9B3-4482-8B11-4F3614A26EA2"] interstitial.delegate = self interstitial.loadRequest(request) return interstitial } //func to show the ad […]

雪碧套件中的iCarousel

说明 我试图build立一个类似Crossy Road的人物select菜单(正如你在这里看到的)。 所以我发现了这个iCarousel ,它可以帮助我完成所有的工作,但是我读到的所有内容都是关于将其实现到ViewController ,这不是我的情况。 我使用的是GameScene ,但是我没有发现任何关于它的事情。 无论如何,我可以执行它到我的游戏? 甚至是另一个类似于上面提到的字符select菜单的效果? 尝试(beyowulf) 你可以在这里下载。 GameScene.swift import SpriteKit class GameScene: SKScene { var show = SKSpriteNode() var hide = SKSpriteNode() func showCharPicker(){ NSNotificationCenter.defaultCenter().postNotificationName("showCharPicker", object: nil) } func hideCharPicker(){ NSNotificationCenter.defaultCenter().postNotificationName("hideCharPicker", object: nil) } override func didMoveToView(view: SKView) { /* Setup your scene here */ print("didMoveToView") show = SKSpriteNode(imageNamed: "show") […]

在设备上运行时iOS8 Beta 3 SpriteKit exc_bad_acces

我目前正在使用Swift在Spritekit开发一个应用程序。 该应用程序在设备上和模拟器上完美工作,直到我更新到Xcode 6 Beata 3和iOS 8 Beta 3.当我在模拟器中运行应用程序,一切仍然完美。 但是,当我创build一个SKTextureAtlas时,在设备上运行应用程序会导致SKTextureAtlas 。 有没有人面临类似的问题,或任何人都可以帮助我如何解决这个问题。 我已经尝试在iOS8 Beta 2的设备上运行它,但是我遇到了同样的错误。 我也删除了应用程序,但这也没有解决我的问题,当在设备上运行的应用程序。 这是它崩溃的地方: var atlas = SKTextureAtlas(named: "ImageSet") 这是来自设备的日志: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0xfffffffc Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libswift_stdlib_core.dylib 0x003a737e 0x286000 + 1184638 1 My Game 0x000f6900 Swift._doesImplicitlyUnwrappedOptionalHaveValue […]

Swift&SpriteKit – 如何在GameScene中显示警报视图

我需要在游戏场景中提供一个警报视图的帮助。 我目前正在努力做到这一点,因为GameScene.Swift不是一个标准的ViewController。 如果有帮助,我需要这样做,因为我需要用户input一个值作为我的游戏中的Sprite Sprite Kit Node的坐标。 input只是一个标准的整数,所以不是一个问题。 任何其他的想法,我怎么能做到这一点,而不是通过一个警报视图也是受欢迎的。 override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() let view = self.view as! SKView if view.scene == nil { view.showsFPS = false view.showsNodeCount = false let gameScene = GameScene(size: view.bounds.size) gameScene.scaleMode = SKSceneScaleMode.AspectFill view.presentScene(gameScene) } } 这是在GameViewController文件中 var vc : GameViewController! override init(size: CGSize) { super.init(size: size) let alertController = […]

Touch函数方法中的多个函数Sprite Kit

请不要投票。 如果这不是一个好问题,我会立即删除,但这是我很困惑。 我有一个风景游戏。 现在,屏幕左边是我的玩家左右移动,屏幕右边是敌人移动。 好,现在,如果我在屏幕右侧的任何位置选中,我的播放器应该可以拍摄,但是如果我在屏幕的左侧标签,我的播放器应该移动。 所以下面是我的代码,我得到这样的线程1信号或类似的东西在这种性质的错误。 你能帮忙吗? // TOUCH FUNCTIONS – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInNode:self.scene]; [self movePlayerToward:touchLocation]; } – (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInNode:self.scene]; [self movePlayerToward:touchLocation]; } – (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch […]