我正在尝试给我的主角一个自定义类,这样我就可以在定义的类中定义他的所有行为。我已经通过使用协议(protocol)做了类似的事情:protocolCustomNodeEvents{funcdidMoveToScene()}该协议(protocol)在GameScene文件中,在类(class)开始之前。然后我在GameScene类中这样调用函数:overridefuncdidMove(toview:SKView){ifletcustomnode=playeras?CustomNodeEvents{customnode.didMoveToScene()}}播放器定义为:player=se
我正在创建一个游戏,我想在其中转换场景。但是,在使用过渡场景时出现此错误:[Graphics]UIColorcreatedwithcomponentvaluesfaroutsidetheexpectedrange.SetabreakpointonUIColorBreakForOutOfRangeColorComponentstodebug.Thismessagewillonlybeloggedonce.3fatalerror:unexpectedlyfoundnilwhileunwrappinganOptionalvalue2017-01-0916:58:33.716407MyGame
我正在开发Breakout类型的游戏。我在不同的场景(PaddleScene.sks)中创建了桨,因此我可以跨多个级别引用它。不确定是否是这样完成的,还是个新手。我通过SKReferenceNode在GameScene.sks中添加了桨,并在如下代码中引用了它:paddle=self.childNode(withName:"//paddle")as!SKSpriteNode这可行,但问题是现在paddle.position.x给我0,因为那是它在PaddleScene.sks中的位置。所以我必须使用SKReferenceNode来获取GameScene中的位置。paddleRef=se
我正在尝试创建一个用户通过投球来玩的游戏。我希望球从顶部边界和侧面边界反弹。球最初放置在底部边界,当用户触摸一个点时,球会朝那个方向移动并从边界弹回。但是,我希望球在再次触及底部边界后停止,而不是从底部边界弹开。我已经做到了,所以球会从所有边界反弹,但我希望它只从顶部和侧面反弹。如果这段代码不足以做出正确的回应,我深表歉意;我是这个论坛的新手:)letborder=SKPhysicsBody(edgeLoopFrom:self.frame)//createvariablerepresentingframeofgamesceneborder.friction=0border.restit
我正在尝试将两个SKNode连接在一起,它们都具有相同大小的圆形物理体。它们的位置相互接触,我希望它们被锁在一起。从文档中,听起来我想要一个SKPhysicsJointFixed,并且我尝试创建一个anchor是两个节点之间的中点-如下所示:letfixedJoint=SKPhysicsJointFixed.joint(withBodyA:atom1.physicsBody!,bodyB:atom2.physicsBody!,anchor:midPoint)但这会导致一种奇怪的行为,即在形成关节之后,顶部节点落入底部节点-在关节存在之前,物理体相互靠在一起。如果我使用销接头代替相同的代
我有一个简单的游戏,两条线从屏幕的顶部移动到底部。这两条线之间有一个固定的空间,球必须穿过该空间,否则游戏就结束了。我对游戏的基础没有问题,我可以添加两条线,每次都有不同位置的空间,但我也想提高线的移动速度。我尝试使用计时器并增加SKAction.move的TimeInterval,但由于稍后添加的行更快,行之间的水平空间变小,这是我不希望发生的。这是添加两行并将它们移动到屏幕底部的函数。funcaddLines(){letlineNodeFirst=SKSpriteNode(color:.red,size:CGSize(width:random(min:100,max:400),he
我在一个简单但快节奏的SpriteKit游戏中遇到了问题,但我已经将我的代码缩减为一个弹跳球,但问题的程度仍然较小:overridefuncdidMove(toview:SKView){super.didMove(to:view)physicsWorld.contactDelegate=selfphysicsWorld.speed=1physicsWorld.gravity=CGVector(dx:0.0,dy:0.0)letborderBody=SKPhysicsBody(edgeLoopFrom:self.frame)borderBody.friction=0self.physic
我使用swift使用普通的单一View类型的应用程序构建了一个简单的问答游戏。但是现在,作为更新的一部分,我想在游戏中添加一个更复杂的琐事关卡,这个关卡将使用SpriteKit构建,带有动画等等,但我不确定如何过渡和显示spriteKit游戏场景在一个简单的单Viewswift应用程序中,然后转换回常规ViewController。我确实四处搜索,但我找不到这个问题的任何具体答案,只能反过来。非常感谢任何帮助。 最佳答案 不确定您是否仍在尝试这样做,但您可以很容易地在UIKit和SpriteKit场景之间转换,执行类似的操作:let
我正在用spritekit构建一个游戏,该游戏具有三个场景:主菜单、游戏场景和游戏结束场景。我需要主菜单显示最高分,游戏场景显示当前分数,游戏结束场景显示最高分和玩家上次游戏的分数。我将如何在场景之间传输这些分数数据以及我将如何跟踪玩家的高分?环顾四周,我发现了有关NSUserDefaults的内容,但我不知道如何正确实现它。诚然,我是SpriteKit的新手,一般来说是编码方面的新手,所以我需要非常具体的说明。抱歉,如果这个问题相当宽泛。谢谢。 最佳答案 NSUserDefaults是跟踪分数的好方法。保存高分:letx:In
我正在制作一个游戏,其中有一个节点从屏幕顶部生成并掉落。但是我想让节点在3秒的时间间隔内随机生成。所以一个在1秒内生成,下一个在2.4秒内生成,下一个在1.7秒内生成,等等。我正在为这个代码应该是什么而苦苦挣扎。我目前拥有的用于生成节点的代码:letwait=SKAction.waitForDuration(3,withRange:2)letspawn=SKAction.runBlock{addTears()}letsequence=SKAction.sequence([wait,spawn])self.runAction(SKAction.repeatActionForever(sp