草庐IT

Sprite-kit

全部标签

swift/ Sprite 套件 : Play music through specific scenes

我有一个游戏,其中有几个教程场景。我可以使用AVFoundation和AVAudioPlayer()为每个场景添加音乐。我需要做的是能够在特定场景中启动音乐,并让它仅在相关场景的背景中继续播放。例如:在教程菜单中启动tutorialMusic继续tutorialMusic教程A继续教程B中的tutorialMusic在教程菜单中继续tutorialMusic停止tutorialMusic并在主菜单中播放mainMenuMusic我尝试过的我尝试将AVAudioPlayer()放在ViewController中,但我发现它会传播到每个场景,无论它是什么。我也找不到ViewControll

ios - 在 GameScene.swift 中显示 UIActivityViewController

我开发了一个小游戏,它由主菜单、游戏本身和一个游戏结束标签组成。我的问题是我已经在GameScene.swift文件中以编程方式添加了所有内容。现在我可以使用这行代码呈现一个UIActivityViewController:classGameScene:SKScene,SKPhysicsContactDelegate{vargameViewController:GameViewController!在GameViewController.swift中,我将这段代码放在viewDidLoad()函数中:scene.gameViewController=self然后我将以下函数添加到我的G

ios - 基于 Swift SpriteKit 分数更改背景

我正在尝试构建一个游戏(SwiftSpriteKit),其中场景的背景会在用户通过一定数量的分数后立即改变。这不起作用(在GameScene中)funcaddSwitchBackgrounds(){letpointsLable=MLPointsLabel(num:0)if(pointsLable==30){letbackgroundTexture=SKTexture(imageNamed:"Store")letbackgroundImage=SKSpriteNode(texture:backgroundTexture,size:view!.frame.size)backgroundIm

ios - 如果像素是透明的,如何制作不响应触摸的 SKSpriteNode?

我正在使用以swift编写的sprite工具包为iOS创建游戏。我在屏幕上有一堆SKSpriteNode可以拖来拖去。它们是各种形状,例如人、苹果、书等。问题是,假设人在苹果前面,但您可以通过人图像(png)中的透明像素看到人后面的苹果。当你去触摸苹果来移动它时,这个人会因为那些透明像素而不是苹果而被选中。如果SKSpriteNode的像素是透明的,我该如何制作不响应触摸的SKSpriteNode? 最佳答案 如果你想选择一个被另一个Sprite部分隐藏的Sprite,你可以使用nodesAtPoint:CGPoint获取用户触摸下

swift - 为什么要通过向量的平方来创建单位向量

我只是在学习有关SpriteKit的精彩教程:http://www.raywenderlich.com/84434/sprite-kit-swift-tutorial-beginners有一件事我想知道,单位向量的创建。在本教程中,单位向量是通过调用normalize函数创建的:funclength()->CGFloat{returnsqrt(x*x+y*y)}funcnormalized()->CGPoint{returnself/length()}这稍后用于将“偏移”向量制作为单位向量:letoffset=touchLocation-projectile.positionletdi

ios - 识别同一位置的所有节点

我有一个iOS应用程序可以在屏幕上绘制Sprite网格。然后我有另一个代表颜色的Sprite,我可以将其拖放到网格上。我的问题是如何确定它被拖到网格上的哪个Sprite?最终我想允许用户将一个颜色Sprite拖到另一个Sprite上,这样我就可以根据用户的选择更改颜色。下面的代码只返回该位置的第二个Sprite(最上面的那个),而我需要在那个位置识别两个Sprite。overridefunctouchesEnded(touches:Set,withEventevent:UIEvent?){print("tocuhesended")fortouchintouches{letlocatio

swift - runAction() 内的变化值不变

我有一个运行Action循环,生成一个敌人然后等待并生成另一个。目的是分数越高,敌人产生的速度就越快。但目前的代码无论如何都以相同的速度生成敌人。我一直在overridefuncupdate(currentTime:NSTimeInterval)方法中更新速率,所以我不知道哪里出了问题。overridefuncupdate(currentTime:NSTimeInterval){spawnRate=2.0-(0.1*(Double)(((Double)(Score))/(10.0)))if(spawnRate 最佳答案 当前发生的事

ios - 单击 SpriteKit 覆盖标签时如何在 SceneKit 中切换场景?

我被这个问题困住了。我在SceneKit场景上放置了一个SpriteKit节点。我试着使用SpriteKit显示标签,这些标签在触摸时切换场景。将“游戏开始”、“退出”、“商店”想象成按钮。但它不起作用。我应该如何通过与SpriteKit标签的交互在SceneKit中切换场景?GameStartimageoverridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){/*Calledwhenatouchbegins*/fortouch:AnyObjectintouches{letlocation=touch.locationI

swift - 如何从单击返回 SKSpriteNode 子类对象

我从SKSpriteNode继承了以下对象classPlayingCard:SKSpriteNode{varsuit:Int=0varrank:Int=0varvisible:Bool=falseinit(){super.init(texture:SKTexture(imageNamed:"card.png"),color:NSColor.blackColor(),size:SKTexture(imageNamed:"card.png").size())}requiredinit?(coderaDecoder:NSCoder){fatalError("init(coder:)hasno

ios - Swift 使用 CMMotionManager 配置加速度计跟踪

我一直在寻找一种方法来为加速度计在我的游戏中跟踪玩家移动的方式添加偏移量。在我的游戏中,您通过前后倾斜手机来控制玩家角色。这由加速度计转换为屏幕上的x和y坐标。不幸的是,这意味着为了阻止角色一直位于屏幕底部,您必须将手机放平。这对玩家来说不是很舒服。所以我正在尝试实现一种方法,无论手机在开始游戏时的角度如何,这都是默认角度,然后倾斜由该角度的增量而不是原始数据决定我猜这将反对0,0...这是我试图弄清楚的:funcinstantiateAcceleration(){ifmotionManager.accelerometerAvailable{letqueue=NSOperationQu