草庐IT

Sprite-Kit

全部标签

ios - 通用游戏位置

解释我正在iPhone5s上构建游戏,但现在我想让它通用,以便它可以在所有iPhone(或至少4s之前)和所有iPad(或至少iPad2之前)上运行。到目前为止,我几乎已经创建了这3张图像(1x、2x和3x)。所以有一个50x50的正方形(@1x)、一个100x100的正方形(@2x)和一个150x150的正方形(@3x)。这是我正在测试的示例项目(下载here):importSpriteKitclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/scene!.scaleM

ios - 如何打开分数以使用 SpriteKit 创建 SKEmitterNode?

我希望能够根据分数打开和关闭我的SKEmitterNode(雨粒子)。但是我的更新功能不断被调用,即我最终在屏幕上看到数百万个粒子,下面是我当前的代码……我如何构建我的代码,以便在达到分数时只调用一次雨粒子?classGameScene:SKScene,SKPhysicsContactDelegate{funcsetUpRain(){ifletrainParticle=SKEmitterNode(fileNamed:"Rain"){rainParticle.position=CGPointMake(frame.size.width,frame.size.height)rainParti

Swift 3 初学者 - 在场景中定位 Assets

我是Swift3和一般编程的完全初学者,所以这将是一个非常基础的问题。我一直在学习教程,目前正在使用CGPoint定位SpriteNode。本教程推荐以下方法将节点定位在屏幕底部的中央:Ground.position=CGPoint(x:self.frame.width/2,y:0)但是,这会导致它停留在屏幕的右上角。当我使用下面的代码时:Ground.position=CGPoint(x:0-self.frame.width/2,y:0-self.frame.height/2)它按预期定位在底部中心。我不明白为什么会发生这种情况,因为此时教程中几乎没有其他内容会导致错误。

swift - 他们是否对哪个 body 是 body 和 body 什么时候开始做出任何保证(_ :) is called?

当调用funcdidBegin(_contact:SKPhysicsContact)的SKScene中发生接触时,需要确定哪个SKPhysicsBody是contact.bodyA和contact.bodyB。但是,我一直没有成功地发现在调用函数之前是如何设置的。这会导致不成功的向下转换(例如(contact.bodyA.node!as!MySpriteNode)导致应用程序崩溃。我的模式理论涉及到它是由应用程序节点树中的SKNode对象的顺序或它们在场景的self.childen中的顺序决定的,但是这已被证明是不正确的。有时,在self.children中晚于bodyB.node的节

swift - 自定义类 SpriteKit

我正在尝试给我的主角一个自定义类,这样我就可以在定义的类中定义他的所有行为。我已经通过使用协议(protocol)做了类似的事情:protocolCustomNodeEvents{funcdidMoveToScene()}该协议(protocol)在GameScene文件中,在类(class)开始之前。然后我在GameScene类中这样调用函数:overridefuncdidMove(toview:SKView){ifletcustomnode=playeras?CustomNodeEvents{customnode.didMoveToScene()}}播放器定义为:player=se

swift - 如何在 SpriteKit 中转换场景?

我正在创建一个游戏,我想在其中转换场景。但是,在使用过渡场景时出现此错误:[Graphics]UIColorcreatedwithcomponentvaluesfaroutsidetheexpectedrange.SetabreakpointonUIColorBreakForOutOfRangeColorComponentstodebug.Thismessagewillonlybeloggedonce.3fatalerror:unexpectedlyfoundnilwhileunwrappinganOptionalvalue2017-01-0916:58:33.716407MyGame

swift - 在 swift 中使用 sprite 工具包触摸角矩形。代码将运行,但没有出现矩形

我想添加一个矩形,其中一个角是用户第一次触摸的地方,另一个角是用户离开的地方。我还希望在用户拖动手指时显示矩形。overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition1=touch.location(in:self)varx1=position1.xvary1=position1.yfunctouchesEnded(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition2=touch.locatio

swift - 如果我总是在不同的类中初始化一种类型的类,这对性能来说是好是坏?

世界!我有一个Actions类,我在我的sprite-kit游戏中保存所有Action、动画和声音播放。所以在我所有的SKNode、SKScene、SKSpriteNode类中,我总是初始化这个Actions类。这对性能有好处吗?或者我必须初始化一次,例如在GameViewController中,然后将此类的副本传递给我需要的所有其他类? 最佳答案 正如Fogmeister在他的评论中提到的,您可以使用静态方法来实现这一点。这也应该有助于提高性能。如果您查看SKAction文档,您会注意到它也使用了类变量和方法。一般来说,如果您不需

swift - 使用 Swift 在 SpriteKit 中导入外部节点

我正在开发Breakout类型的游戏。我在不同的场景(PaddleScene.sks)中创建了桨,因此我可以跨多个级别引用它。不确定是否是这样完成的,还是个新手。我通过SKReferenceNode在GameScene.sks中添加了桨,并在如下代码中引用了它:paddle=self.childNode(withName:"//paddle")as!SKSpriteNode这可行,但问题是现在paddle.position.x给我0,因为那是它在PaddleScene.sks中的位置。所以我必须使用SKReferenceNode来获取GameScene中的位置。paddleRef=se

Swift SpriteKit 创建一个只有三个边可以通过的边框

我正在尝试创建一个用户通过投球来玩的游戏。我希望球从顶部边界和侧面边界反弹。球最初放置在底部边界,当用户触摸一个点时,球会朝那个方向移动并从边界弹回。但是,我希望球在再次触及底部边界后停止,而不是从底部边界弹开。我已经做到了,所以球会从所有边界反弹,但我希望它只从顶部和侧面反弹。如果这段代码不足以做出正确的回应,我深表歉意;我是这个论坛的新手:)letborder=SKPhysicsBody(edgeLoopFrom:self.frame)//createvariablerepresentingframeofgamesceneborder.friction=0border.restit