草庐IT

Sprite-kit

全部标签

ios - 在 View Controller 中添加 Spark 粒子 Sprite

我基于spark模板创建了一个.sks粒子发射器。我的应用程序是普通应用程序(不是游戏)。当用户单击一个按钮时,我有一个新的ViewController,它以模态方式显示全屏,这样我就可以模糊背景。在这个模态中,我创建了一个View并给它一个SCNView类,见下图:如何加载粒子.sks文件以在ParticlesView的viewController上执行动画?更新如何在ViewController中加载SceneKit粒子系统? 最佳答案 如@mnuages所述,您可以使用.scnp文件代替.sks,这是一个SceneKit粒子系

iOS SpriteKit - 游戏开始前倒计时?

刚开始使用Swift在iOS上使用SpriteKit。我有一个教程中的“Breakout”游戏,我想在每次球发射前实现倒计时,方法是在屏幕中间放置一个SKLabel,它在移除自身和游戏开始之前从5倒计时到1。倒计时进行时,您可以看到完整的游戏屏幕,包括墙壁、固定球等。我不知道在游戏循环的哪个位置执行此操作。如果我在didMoveToView中进行倒计时(我在其中创建墙并初始化球和桨),我永远不会看到它,但我会在日志中看到我的调试消息。我猜didMoveToView在SKScene出现之前被调用。我尝试在第一次调用“更新”时使用标志来调用倒计时功能,但我再次看到倒计时在屏幕上出现任何内容

ios - SpriteKit 矢量图形性能

对于我的SpriteKit游戏,我为我的SKSpriteNode使用单个pdf矢量图,而不是为游戏中每个实体的所有设备分辨率使用许多pngSprite。不必太担心游戏图形的好处有很大的帮助,但我的问题很简单,使用矢量图形在性能方面会是个坏主意吗? 最佳答案 等等,您没有使用PDF作为SKSpriteNode的纹理您可能正在使用PDF进入XcodeAssetCatalog,对吧?在这种情况下,首先这是一个非常好的主意,它不会影响您游戏的性能。事实上,当您将PDF图像加载到XcodeAssets中(并将ScaleFactors设置为Si

swift - 将 SKReferenceNode/SKScene 添加到 SpriteKit 中的另一个 SKScene

我想在我的主要GameScene中添加一个SKScene。SKReferenceNode似乎是一个很好的解决方案。我有:-GameScene.sks(主场景)-Countdown.sks(添加到GameScene的场景)-Countdown.swift(自定义类,如何初始化它?SKScene?SKReferenceNode?SKNode)我不知道如何使用我的倒计时类以编程方式添加我的倒计时。我试过:letpath=Bundle.main.path(forResource:"Countdown",ofType:"sks")letcd=SKReferenceNode(url:NSURL(f

ios - 重启 Sprite - Kit Game Swift

我使用SpriteKit创建了一个简单的2D街机游戏,我正在尝试添加一个计分系统。游戏基本上是一个方形Sprite,它必须跳过各种障碍。所以我想要的是当玩家接触到整个游戏重新开始的对象时。游戏检测到接触(我之前测试过)但是当我移除我所有的child然后运行我的游戏的基本主要功能时,我注意到旧对象不断产生并相互困惑。funcdidBegin(_contact:SKPhysicsContact){if(contact.bodyA.categoryBitMask==PhysicsCategory.Player&&contact.bodyB.categoryBitMask==PhysicsCa

ios - 如何让 Sprite 节点在用户点击屏幕时旋转? swift 3

我希望实现的结果:我有一个节点,它几乎是一个带辐条的自行车车轮。当用户用胶带粘住屏幕时,我希望轮子不仅会弹跳,而且会随着每次点击而旋转。我现在拥有的:节点当前会在用户点击屏幕时反弹,就像它应该的那样。但是它不旋转。我仍在学习Swift,因此非常感谢任何帮助或建议。代码:wheelNode=SKSpriteNode(imageNamed:"wheel")wheelNode.zPosition=1wheelNode.position=CGPoint(x:self.frame.midX,y:self.frame.midY)wheelNode.physicsBody=SKPhysicsBody

ios - swift spritekit - 无法使用类型为 'runAction' 的参数调用 'SKAction!'

我试图让一个SKSpriteNode在屏幕上弹跳,但是当我运行它时,我得到一个错误(在第一行):cannotinvoke'runAction'withanargumentoftype'SKAction!'我不知道是什么原因造成的。我在下面粘贴了整个runAction代码:self.runAction(SKAction.sequence([SKAction.repeatAction(SKAction.sequence([{self.updatePath()},SKAction.followPath(path.CGPath,duration:3.0)]),count:numberOfBou

ios - 无法使用类型为 'enumerate' 的参数列表调用 '(String)'

当我遵循NeilNorth的iOSSwift游戏教程时,出现错误“无法使用类型为‘(String)’的参数列表调用‘enumerate’”。这与1.2中的某种旧方法有关吗?有什么想法吗?convenienceinit(atlasName:String,tileSize:CGSize,tileCodes:[String]){self.init(tileSize:tileSize,gridSize:CGSize(width:tileCodes[0].characters.count,height:tileCodes.count))atlas=SKTextureAtlas(named:atl

ios - 是否必须使用 Assets.xcassets?

我想知道我们是将图像放在xcodeAssets.xcasset中还是一个图像文件就足够了?谢谢 最佳答案 https://developer.apple.com/videos/play/wwdc2018/219/来自WWDC2018:“...对于您的应用程序附带的艺术品,我们强烈建议您使用图像Assets。原因有很多。”其中一些原因:“图像Assets针对基于名称和基于特征的查找进行了优化。在Assets目录中查找图像Assets比在磁盘上搜索具有特定命名方案的文件要快。”“管理缓冲区大小”“...按设备细化,这意味着您的应用程序仅

swift - 二元运算符 (*) 不能应用于操作数 CGPoint 和 CGFloat

我正在尝试为玩家添加重力和速度,但无法修复此错误。我尝试了多种不同的方法,但总是遇到相同类型的错误。谁能告诉我我做错了什么以及为什么不能使用multiplyaCGPoint和一个CGFloat或CGFloat*CGFloat或CGPoint*一个CGPoint? 最佳答案 您可以使用运算符重载来执行此操作。func*(lhs:CGPoint,rhs:CGFloat)->CGPoint{returnCGPoint(x:lhs.x*rhs,y:lhs.y*rhs)} 关于swift-二元运算