草庐IT

ios - 让玩家双跳 Sprite Kit Swift

我已经为我的播放器实现了一次跳跃。但我希望播放器能够在用户点击两次时进行二段跳。我如何让下面的这个功能检查跳跃是否仍在持续时间,以便他们可以在需要时再次点击和跳跃?overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){varisJumping=falsevarisDoubleJumping=falseifmario.action(forKey:"jump")==nil&&isJumping{letmarioTextureJump=SKTexture(imageNamed:"mariojump.png")letanimatio

ios - 如何在 Swift 中制作随机 Sprite 位置生成器

我创建了一个游戏,鸟类会随机出现在屏幕上。人像模式。希望它们从随机的x位置出现(从框架的中间)我还希望它们位于屏幕的随机Y位置(“self”屏幕的最大顶部)第一行代码有效(randomGenerator),但只在屏幕的一侧(X位置)。我不能将负值放入X位置,因为它不允许。如您所见,我随后尝试了其他事情。我做错了什么?varrandomGenerater=CGPoint(x:Int(arc4random()%180),y:Int(arc4random()%260))varminXPosition=(CGRectGetMidX(self.frame)*CGFloat(Float(arc4r

swift - 如何使节点在 sprite kit swift 中移动

很长一段时间以来,我一直在想如何做到这一点,我正在使用SpriteKitswift,我的问题是当我把它放在场景中时,我不知道如何使用SKActions如此基本地移动节点他们看到一个节点在移动(命名为节点Sprite),我不明白它是如何工作的,有人可以告诉我一个关于如何做到这一点的解释示例,提前谢谢你! 最佳答案 要在Sprite-Kit中移动Sprite,您可以使用SKActions。例如:letaction=SKAction.moveByX(3,y:2,duration:10)这将使Sprite在10秒内沿x轴移动3个单位,沿y轴

swift - SpriteKit - 在随机位置创建而不重叠

我想在随机位置创建一些Sprite而不重叠,这是我的代码:varsprites=[SKSpriteNode]()forindexin0...spriteArray{letsprite=SKSpriteNode(imageNamed:named)sprites.append(sprite)checkInterception(sprite,sprite2:sprites)//positioningusingafunctionaddChild(sprite)}这里我检查重叠:funccheckInterception(sprite1:SKSpriteNode,sprite2:[SKSprit

ios - 为什么 SKShapeNode 在顶部边框上更亮

我只想知道为什么这些SKShapeNode会这样。我尝试将sprite.lineWidth和sprite.glowWidth设置为0,但无法让它们均匀显示。然而,当使用UIColor.redColor()显示它们时,这不会发生。另外请注意,您无法真正看到这些图片的效果,但是当我在我的iPhone上模拟它们时,颜色没有正确“混合”。在较暗的颜色上很难看清,而在对比色(即红色和黄色)上更容易看清。您可以看到顶部边框比底部边框稍微亮一些,因此可以清楚地区分盒子。如何让它们看起来“更平滑”?这是我使用的代码:varx:CGFloat=0.0varskip:CGFloat=10varrandR:

ios - 重力属性在 SpriteKit 场景中不起作用

importSpriteKitclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/}overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){/*Calledwhenatouchbegins*/fortouchintouches{letlocation=touch.locationInNode(self)letsprite=SKSpriteNode(imageNamed:"BeachBall-100")se

ios - 创建一个在圆外旋转的对象

我试图创建一个在圆外旋转的对象,但它在圆内旋转。这就是我想要做的(我的角色):funcmoveClockWise(){vardx=Character.position.x-self.frame.width/2vardy=Character.position.y-self.frame.height/2varrad=atan2(dy,dx)Path=UIBezierPath(arcCenter:CGPoint(x:self.frame.width/2,y:self.frame.height/2),radius:150,startAngle:rad,endAngle:rad+CGFloat(

ios - Sprite 出现在模拟器中,而不是设备上

这个简单的项目会在您按下按钮时在field中央插入一个方形Sprite,这会调用下面的add()函数。在模拟器中,当你添加多个Sprite时,它会将其他Sprite推开,所以当你多次按下它时,你会得到......screenshotfromsimulator,iphone6,iOS9.2,这就是我想要的行为。但是在我的iPhone上运行相同的代码,在添加相同数量的sprite后会产生这个...screenshowfromphysicaliphone6,iOS9.2这是来自GameScene.swift的代码:importSpriteKitclassGameScene:SKScene{o

ios - 预加载 Sprite 套件纹理

所以我正在阅读有关最佳sprite工具包实践的apple文档。我遇到了这个:例如,如果您的游戏在其所有游戏玩法中使用相同的纹理,您可以创建一个在启动时运行一次的特殊加载类。您执行一次加载纹理的工作,然后将它们留在内存中。如果场景对象被删除并重新创建以重新开始游戏,则不需要重新加载纹理。这将显着提高我的应用程序的性能。有人可以指出正确的方向,告诉我如何实现这一目标吗?我假设我会调用一个函数来在我的ViewController中加载纹理?然后访问该纹理图集? 最佳答案 问题是,你真的想像那样缓存资源吗?不能说我曾经发现需要那种性质的东西

swift - 有没有办法暂停具有特定 zPosition 及以下的所有 Sprite ?

我正试图暂停我游戏中的许多Sprite。有没有一种方法可以暂停具有给定zPosition的Sprite或低于给定zPosition的所有Sprite?这些Sprite也可能在更新方法中更新物理体。 最佳答案 您可以使用如下示例中的代码来完成此任务:self.enumerateChildNodes(withName:"//*"){node,stopinifnode.zPosition>1&&node.zPosition您还可以决定在第一行中使用特定的“名称”而不是“*”来仅对具有此名称的节点进行分组。