碰撞检测不是在didBeginContact函数中调用NSLog。物理学工作正常......有人可以告诉我我做错了什么吗?我尝试过的一切都给了我相同的结果。importSpriteKitclassGameScene:SKScene,SKPhysicsContactDelegate{letcategory0:UInt32=0x1 最佳答案 根据KnightOfDragon的评论回答我自己的问题。这是工作方法。funcdidBeginContact(contact:SKPhysicsContact){varfirstBody:SKPhy
所以我是SpriteKit和Swift的新手,我并不真正理解节点背后的概念(或者sprite-kit中与此相关的任何内容)。我请求你向我解释节点的概念。我更习惯于为每个节点设置一个不同的变量实例(例如创建一个数组),这让我可以非常具体地引用任何单个节点。然而,在spritekit中,情况似乎并非如此,因为您只需制作一次并使用addChild调用它的多个实例。(比我一直在做的好多了...)这有点让我感到困惑,因为我主要不明白如何针对这些测试场景或其他东西或单独引用一个场景。例如,我试图使用removeFromParent()从场景中移除一个对象,但我不知道如何实现类似的东西:if(ene
所以我希望学习如何使用Swift在Spritekit中制作图标ScrollView(有点像菜单)。我找不到任何不收费的好资源或教程。我已经使用ViewController和我的场景设置了我的基本应用程序。我希望有一个比屏幕高度长2或3倍的ScrollView,我可以在其中上下滚动并查看不同的图标。我希望这是一个很好的实现,这样我就可以使用x/y坐标以编程方式设置所有图标。我的viewdidLoad:overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/addChild(worldNode)//createScrollv
我最近一直在更新我的游戏以使用更多的值类型。在某些情况下,我对weak和unowned仍然不是100%有信心,所以我采用结构方式来避免强引用循环。根据apples较新的主题演讲,值类型似乎是大多数情况下的方法。我从未见过在spriteKit游戏中使用结构来渲染Sprite的示例,所以我想知道有什么缺点。我知道它们是复制的而不是引用的,但对于我的使用来说它似乎有效。所以基本上我在做这个的时候有什么需要注意的地方structFlag{letpost:SKSpriteNodeletflag:SKSpriteNodeinit(postImage:String,flagImage:String)
我正在使用Swift和SpriteKit开发游戏。我希望背景在一定分数下发生变化。这是代码:classGameScene:SKScene{varbg=SKSpriteNode()overridefuncdidMoveToView(view:SKView){makeBg()}funcmakeBg(){letbgTexture=SKTexture(imageNamed:"img/bg.png")letmoveBg=SKAction.moveByX(-bgTexture.size().width,y:0,duration:9)letreplaceBg=SKAction.moveByX(bgT
我一直在尝试使用方便的初始值设定项来覆盖SKSpriteNode初始值设定项,该初始值设定项允许我实例化具有一些额外属性的SKSpriteNode子项,但每次尝试时,我都会收到编译器错误。这是我理解的两大规则。规则:每个便利构造器都必须引用指定的构造器,无论是来自类本身还是父类必须在初始化程序委托(delegate)给父类之前设置子类属性。这是我认为遵循规则的代码:classWalkingMonster:SKSpriteNode{varrangeOfMovement:CGFloatvaroriginalPosition:CGFloatvarplatformNumber:Intvarim
我所说的概念类似于许多简约、流行的手机游戏中的游戏风格,例如ColorSwitch、LineZen、Phases或Bounce。这些是由一系列随机排列的“关卡”或“房间”组成的无尽游戏,一个接一个,营造出无尽游戏的效果。关键是每个关卡的挑战都不是随机的,它们是事先设计好的,如果某个关卡是随机选择的,它就会出现在屏幕上,玩家就会穿过那个关卡。我认为这个概念可以称为程序生成,但我并不肯定。我如何使用Swift在SpriteKit中执行此操作?我不太确定从哪里开始,也许为每个关卡段创建一个函数,然后每隔几秒,随机选择一个放在屏幕上?感谢任何帮助!非常感谢! 最佳答
我有一个新游戏,刚开始使用swift在spritekit中构建,我想知道如何在多个场景中无缝使用SKEmitterNode。目前我的游戏包含3个场景:菜单、游戏和游戏结束。我想在所有3个场景的背景中不间断地使用SKEmitterNode。任何帮助将不胜感激,谢谢! 最佳答案 感谢KnightOfDragon和Whirlwind在评论中的帮助,只需将发射器传递到下一个场景就可以正常工作并且不会中断粒子。我在“介绍”场景中设置了SKEmitterNode并在全局声明了它。然后在移动到下一个之前的当前场景:emitter.removeFr
您如何知道在游戏开始前何时使用加载屏幕?我不是在谈论打开应用程序时出现的启动画面。我说的是游戏开始之前或菜单选项出现之前的实际加载屏幕(通常带有加载栏)?(示例:愤怒的小鸟、UltimateBriefcase、ClashofClans)您如何知道何时达到需要加载屏幕的Assets、音频文件等数量的阈值?你把它放在场景文件中了吗?或者别的地方?(这是在Xcode/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