草庐IT

Spritekit

全部标签

ios - 奇怪的 SpriteKit 循环错误

我遇到了一个我无法弄清楚的非常奇怪的错误。在我的游戏中,您正在2D平面上驾驶汽车,试图避开障碍物(如岩石或汽车)。障碍物可以出现在3条不同的路径上。有时任何一条路径上只有一个障碍物,有时三条路径中的两条路径上有两个障碍物。我遇到的问题是,当两个障碍物出现并在它们离开屏幕时被删除时,当前在屏幕上移动的障碍物之一也被“删除”(我知道这是因为控制台打印“已删除的对象“3次)。但是,随机“删除”的障碍并没有从View中移除。相反,它会卡住在之前的位置并且永远不会消失。这是我遇到问题的代码块:varcanGetScore=truefor(num,obj)inenumerate(obstacles

ios - SpriteKit 中 SKLabelNode 的物理体?

如何在SpriteKit中为一串字符创建物理形体?我不希望它是字体周围的矩形,我希望每个字母都是自己的形状以便联系。 最佳答案 没有内置方法可以从SKLabelNode或字符串中的字符创建SKPhysicsBody。您可能想研究创建一个完整的字母字符图像集,为字符串中的每个字母创建一个SKImageNode,并使用+bodyWithTexture:size:来根据其纹理为每个物体分配一个物体。 关于ios-SpriteKit中SKLabelNode的物理体?,我们在StackOverfl

ios - SpriteKit 碰撞检测中 SKSpriteNodes 之间的间隙

我已经尝试解决这个问题很长一段时间了——我有一款游戏具有简单的平台游戏物理原理,其中玩家掉落到一个block上,从而阻止他掉落。这是可行的,但是玩家停止的位置与实际对象/Sprite节点所在的位置之间存在明显的差距。这是一个屏幕截图,它应该是不言自明的:classGameScene:SKScene{overrideinit(){super.init(size:UIScreen.mainScreen().bounds.size)self.physicsWorld.gravity=CGVector(dx:0,dy:-9.8)}requiredinit?(coderaDecoder:NSCo

swift - Spritekit-场景转换延迟

我有一个主屏幕,上面有一个按钮,当按下这个按钮时,它应该立即转换到另一个场景,但事实并非如此。它实际上需要几秒钟。有没有办法可以预先加载该场景中的所有节点?(示例:在游戏加载屏幕中)这是我的代码:letpressButton=SKAction.setTexture(SKTexture(imageNamed:"playButtonP.png"))letbuttonPressed=SKAction.waitForDuration(0.15)letbuttonNormal=SKAction.setTexture(SKTexture(imageNamed:"playButton.png"))l

ios - spritekit游戏项目中如何让节点围绕节点外的点旋转

我遇到了这个答案,但我不清楚答案。有人可以提供一些示例代码吗?创建一个SKNode并将其位置设置为旋转中心。将应该围绕该中心旋转的节点作为子节点添加到中心节点。将子节点的位置设置为所需的偏移量(即半径,比如x+100)。更改中心节点的旋转属性,使子节点围绕中心点旋转。具体来说,“改变中心节点的旋转属性”是什么?varcenterNode:SKSpriteNode=SKSpriteNode(imageNamed:"image1")centerNode.position=CGPointMake(self.frame.width/2,self.frame.height/2)self.addC

ios - 我如何区分 spriteKit 和 swift 中的手势和触摸?

我有两个功能,一个在我触摸场景时激活,另一个在我向下做手势时激活,但是当我做手势时,场景检测到触摸并执行这两个功能classGameScene:SKScene,SKPhysicsContactDelegate{overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*///physics&collisionsphysicsWorld.gravity=CGVectorMake(0.0,0.0)physicsWorld.contactDelegate=self//SwipedownletswipeDown:UISwipeGest

swift - 创建透明渐变并将其用作 SpriteKit 中的 alpha 蒙版

我正在尝试制作渐变并将其用作alpha蒙版。现在,我可以制作与此类似的图像(从黑色到透明):这是我用来制作这一切的代码:privatefunccreateImage(width:CGFloat,height:CGFloat)->CGImageRef?{ifletciFilter=CIFilter(name:"CILinearGradient"){letciContext=CIContext()ciFilter.setDefaults()letstartColor=CIColor(red:0,green:0,blue:0,alpha:0)letendColor=CIColor(red:0

swift - 在 swift 3 Spritekit 中返回上一个 View 时出错

当我从我的菜单场景切换到我的游戏场景时,它运行得非常好。但是,当我试图回去时,这是一场灾难。我得到:在展开Optional值时意外发现nil。返回的代码是:letmenuscene=MenuScene(size:self.size)menuscene.scaleMode=scaleModeself.view?.presentScene(menuscene)它说错误来自的代码是:PlaygamebtnNode=self.childNode(withName:"PlaygamebtnNode")as!SKSpriteNodeNamelblNode=self.childNode(withNa

ios - SpriteKit - 你有必要进行内存管理吗? (在不再需要场景后删除节点等)

我一直在通过SpriteKit创建一个游戏,并且正在使用SKScene和SKSpriteNodes和SkNodes命令这样做。当用户死亡时,我让SKScene的父ViewController通过ViewController执行segue到游戏。我从游戏场景中删除了一些SKSpriteNodes,但没有删除任何SKNodes。当用户再次按下播放键时,它会使用SKScene执行返回到ViewController的操作,游戏将重新开始。我想知道是否有必要在用户死亡后以及我通过ViewControllersegue进入游戏之前从内存中删除SKScene及其节点。我创建的所有SKNodes和SK

xcode - 视差滚动 SpriteKit

我找到了一个使用objective-C在spritekit中进行视差滚动的教程,尽管我一直试图将它移植到swift上,但没有取得太大成功,事实上几乎没有成功。ParallaxScrolling有没有人有在swift中进行视差滚动的任何其他教程或方法。 最佳答案 这是启动视差背景的一种super简单的方法。带滑冰!我希望它能帮助您了解基础知识,然后再转向更难但更有效的编码方式。因此,我将从让背景移动的代码开始,然后您尝试复制前景或要放入场景中的对象的代码。//declaregroundpicture.IfYourputtingthis