草庐IT

Sprite-kit

全部标签

ios - 为 SKSpriteNode 子类创建初始化器

我一直在尝试使用方便的初始值设定项来覆盖SKSpriteNode初始值设定项,该初始值设定项允许我实例化具有一些额外属性的SKSpriteNode子项,但每次尝试时,我都会收到编译器错误。这是我理解的两大规则。规则:每个便利构造器都必须引用指定的构造器,无论是来自类本身还是父类必须在初始化程序委托(delegate)给父类之前设置子类属性。这是我认为遵循规则的代码:classWalkingMonster:SKSpriteNode{varrangeOfMovement:CGFloatvaroriginalPosition:CGFloatvarplatformNumber:Intvarim

swift - SpriteKit 和 Swift : How to create level "segments" that are randomly "stitched" together to create an endless game?

我所说的概念类似于许多简约、流行的手机游戏中的游戏风格,例如ColorSwitch、LineZen、Phases或Bounce。这些是由一系列随机排列的“关卡”或“房间”组成的无尽游戏,一个接一个,营造出无尽游戏的效果。关键是每个关卡的挑战都不是随机的,它们是事先设计好的,如果某个关卡是随机选择的,它就会出现在屏幕上,玩家就会穿过那个关卡。我认为这个概念可以称为程序生成,但我并不肯定。我如何使用Swift在SpriteKit中执行此操作?我不太确定从哪里开始,也许为每个关卡段创建一个函数,然后每隔几秒,随机选择一个放在屏幕上?感谢任何帮助!非常感谢! 最佳答

ios - 在多个 SKScenes 中使用 SKEmitterNode

我有一个新游戏,刚开始使用swift在spritekit中构建,我想知道如何在多个场景中无缝使用SKEmitterNode。目前我的游戏包含3个场景:菜单、游戏和游戏结束。我想在所有3个场景的背景中不间断地使用SKEmitterNode。任何帮助将不胜感激,谢谢! 最佳答案 感谢KnightOfDragon和Whirlwind在评论中的帮助,只需将发射器传递到下一个场景就可以正常工作并且不会中断粒子。我在“介绍”场景中设置了SKEmitterNode并在全局声明了它。然后在移动到下一个之前的当前场景:emitter.removeFr

ios - SpriteKit 游戏加载屏幕(不是启动屏幕)

您如何知道在游戏开始前何时使用加载屏幕?我不是在谈论打开应用程序时出现的启动画面。我说的是游戏开始之前或菜单选项出现之前的实际加载屏幕(通常带有加载栏)?(示例:愤怒的小鸟、UltimateBriefcase、ClashofClans)您如何知道何时达到需要加载屏幕的Assets、音频文件等数量的阈值?你把它放在场景文件中了吗?或者别的地方?(这是在Xcode/Spritekit的上下文中)抱歉提出所有问题。只是想了解并让我的游戏变得更好。感谢您的帮助! 最佳答案 回答:除非万不得已,否则不应使用加载屏幕。不要为了使用一个而使用一个

ios - 用自定义数字替换数字 SpriteKit

我有点迷茫,正在寻找一种方法让我的分数数字看起来像飞扬的小鸟数字。我已为每个号码准备好所有图像,但不知道如何操作。varscoreLabel:SKLabelNode!overrideinit(size:CGSize){super.init(size:size)GameHandler.sharedInstance.score=0scorelabelhud()}funcscorelabelhud(){scoreLabel=SKLabelNode(fontNamed:"bubblefont.ttf")scoreLabel.fontSize=80scoreLabel.fontColor=SKC

ios - swift 如何将 SKEmitterNode 添加为 SKSpriteNode 后面的烟雾?

我正试图在我的宇宙飞船后面放一缕烟雾。我将烟道作为发射器节点计算出来,但我似乎无法将发射器连接到宇宙飞船。我不明白为什么这行不通。IE。发射器根本没有出现在屏幕上:varspaceShip:SKSpriteNode?spaceShip=SKSpriteNode(imageNamed:"ship1.png")spaceShip!.position=CGPoint(x:Int(arc4random_uniform(UInt32(self.size.width))),y:Int(arc4random_uniform(UInt32(self.size.height))))lettrailEmm

swift - 通知和暂停模式

我正在使用Swift和SpriteKit制作一些游戏。当我的应用程序进入后台时,它会调用暂停功能,但会在游戏恢复时自动取消暂停。funcpauseTheGame(){self.scene?.isPaused=true}应用委托(delegate)funcapplicationWillResignActive(_application:UIApplication){NotificationCenter.default.post(name:NSNotification.Name(rawValue:"goToBackground"),object:self)游戏场景NotificationC

ios - SpriteKit 纹理 "scaling"各不相同

完全相同的纹理,不同的结果这里是SKSpriteNode和SKShapeNode从纹理图集获得相同的纹理。SKSpriteNode在右边,它做正确的事。SKShapeNode在左边,做错事了。拜托,我做错了什么?这是代码...overridefuncdidMove(toview:SKView){letmyTextureAtlas=SKTextureAtlas(named:"demoArt")letarrayOfFileNames=myTextureAtlas.textureNamesletmyTexture=myTextureAtlas.textureNamed(arrayOfFile

swift - for循环不按顺序执行代码(swift + spritekit)

这是我的代码:overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/letorigin=CGPoint(x:CGRectGetMidX(self.frame),y:CGRectGetMidY(self.frame))letdelay=SKAction.waitForDuration(2.0)for(vari=0;i基本上,我的球会在圆圈上的随机点上生成并向中心移动。但我遇到的问题是,无论我如何重新安排事物(或重写事物,即尝试不同的循环或定义用于生成球和球运动的函数并简单地从switch语句内部调用它们)所有球同时产生。

swift - 使用奇怪形状的图像运行动画检测 SKSpriteNode 上的触摸

将SpriteKit用于iOS9.0应用程序/游戏(没有物理体)。我在一个场景中有几个SpriteNode。SpriteNodes带有奇形怪状的图像,并贯穿多帧动画。检测对SpriteNode图像内容的触摸,而不是整个图像矩形的透明区域的最佳方法是什么。我看到很多关于使用SKCropNode/MaskImage的帖子。在我的场景中,我为动画的每个SpriteNode设置了多个图像/帧。请就方法提出建议或为我指明正确的方向。谢谢。 最佳答案 基于以上评论的附加信息:在16帧中只有16种形状的情况下,一种更有效的方法是在每一帧绘制大致近