草庐IT

Sprite-kit

全部标签

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

swift - 如何循环动态延迟的 SKActions 序列

我需要运行未知数量(来自字典数组)的SKAction序列,这些序列是动态创建的,并使用随着循环进行而增加的延迟在循环中进行偏移。循环的打印输出应按以下顺序出现showline5hidingeverythingshowline6hidingeverythingshowline2hidingeverything为了获得这个功能,我使用了这段代码funcdisplay(winningLines:[Int:AnyObject]){vardelay=0.0varactions=[SKAction]()lethideAction=SKAction.run{print("hidingeverythi

swift - SpriteKit SKPhysicsJoint修复了奇怪的行为

我正在尝试将两个SKNode连接在一起,它们都具有相同大小的圆形物理体。它们的位置相互接触,我希望它们被锁在一起。从文档中,听起来我想要一个SKPhysicsJointFixed,并且我尝试创建一个anchor是两个节点之间的中点-如下所示:letfixedJoint=SKPhysicsJointFixed.joint(withBodyA:atom1.physicsBody!,bodyB:atom2.physicsBody!,anchor:midPoint)但这会导致一种奇怪的行为,即在形成关节之后,顶部节点落入底部节点-在关节存在之前,物理体相互靠在一起。如果我使用销接头代替相同的代

ios - 让节点以恒定速度跟随

我正在尝试制作一个小型迷你游戏,您可以在屏幕上拖动一个球,每隔10秒就会添加一个球跟随您。到目前为止,您可以在屏幕上拖动一个球,一个球会跟随您,但是当另一个球被添加到球组中时。我想这是因为球会跟着我走,这取决于我走多快。那么有没有一种方法可以让球以一定的速度不断跟随我,比如每秒10像素左右,这样可以防止球聚集在一起。我目前正在研究分数,所以它应该很快就会在你生存的每一秒上升。如果你触摸其中一个球,你就会死。下面是代码和我当前代码的简短gif!(https://gyazo.com/1d6a56527bfd0884e8a26cff730f4e03)importSpriteKitimport

swift - 在不再次运行的情况下更改 touch 内部的 node.name?

我想点击某个spritenode,改变那个spritenode的值。这就是问题所在。当我这样做并设置一个if语句时,它知道转到该if语句。但是,我不希望它在下次单击按钮之前运行。示例:apple.name="apple"overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letlocation=touch.location(in:self)letnode:SKNode=self.atPoint(location)ifnode.name=="apple"{appple.name="oran