我有很长的2d关卡,所以我将它分成更多的.sks文件。我有“GameScene”,我可以通过拖放将它们加入到场景编辑器中。它创建SKReferenceNodes。我已经成功地做到了。但是我想在代码中需要时延迟加载这些部分(据说这是一种很好的做法)。我在这方面失败了。这是代码的特殊部分:ifletnextPart=SKReferenceNode(fileNamed:"Scene2_city2"){ifself.childNodeWithName("Scene2_city2")==nil{self.addChild(nextPart)}}"Scene2_city2"是.sks文件的名称,也
我有一个不时使用音频剪辑的sprite-kit游戏场景(SKScene)。我不想每次需要运行一个简短的音频剪辑时都创建一个新操作(SKAction),因为声音可能会断断续续。因此,我用一个文件名初始化了一个Action变量,并准备好在必要时使用它。classGameScene:SKScene{letaudioMatchAction=SKAction.playSoundFileNamed("myAudio",waitForCompletion:false)}然后当我需要运行这个音频剪辑时,我只需要使用下面这行代码。self.run(audioMatchAction)考虑到所有情况,有一些
SKScene-update的文档如下:“当前系统时间”到底是什么?除了通过SKScene-update之外,我该如何获取它?我试过CFAbsoluteTimeGetCurrent(),但显然是这样Returnsthecurrentsystemabsolutetime[,whichis]ismeasuredinsecondsrelativetotheabsolutereferencedateofJan1200100:00:00GMT.并且与“当前系统时间”不同,根据我的测试,“当前系统时间”的值比“当前绝对时间”小几个数量级。 最佳答案
我正在尝试获取/设置subview(SKView)的正确大小。我正在使用Storyboard创建一个UIView和一个SKViewsubview。我想以编程方式创建一个具有SKView尺寸的SKScene。我的想法是scene.size.height和scene.size.width将等于SKView的高度和宽度。为了测试这一点,我在每个角上画了四个蓝色圆圈,在边框上画了红线。当我期望看到所有四个蓝色角点和边界线时,我只能看到左下角。请忽略场景中的黑色圆圈,它们无关紧要。iPhone6截图(纵向)iPhone6屏幕截图(横向)我添加了SW(西南)、SE、NE和NW标签ViewContr
我在SceneKit场景的中心位置(0,0,0)有一个摄像头我正在围绕y轴旋转相机以显示场景的不同部分。我想在屏幕的左侧/右侧显示箭头,以显示用户必须朝哪个方向移动才能查看目标对象。如何计算ScnNode是否位于我的视线方向的左侧或右侧?我知道:相机节点的位置和旋转目标节点的位置 最佳答案 计算节点相对于相机的向量。节点位置减去相机位置计算向量使用atan2将矢量转换为角度。苹果文档的解释有点单薄。在raywenderlich.com上有一个教程.例如letv=CGPoint(x:nodePosition.x-cameraPosit
一旦我的SpriteKit游戏结束,我想回到我的UIKitMenuViewController。根据我目前了解到的情况,使用protocol/delegate是最好的(?)选项,但我无法让它发挥作用。我知道该协议(protocol)可能会高于GameViewController的类声明,看起来像这样:protocolGameViewControllerDelegate{vargameOver:Bool?}但我需要帮助从GameScene访问它并让它关闭GameViewController。以下是应用程序的骨架,以防有帮助。菜单ViewControllerclassMenuViewCon
我想使用我自定义的SKNode子类创建一个关卡。我尝试将SKNode添加到场景编辑器,并使用“自定义类”选项卡提供我想要的类,但这绝对没有任何作用。该节点仍然是空的,当我运行模拟器时什么也不会显示。此外,为了确保该类确实有效,我以编程方式将它的一个实例添加到场景中,以查看它是否显示并且确实显示了。如何通过场景编辑器将我的自定义节点添加到场景中?这是我的自定义类代码:classPlayer:SKSpriteNode{requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)print("Test")self.addChi
我一直在试验UIGestureRecognizers和SpriteKit中的新SKScene/SKNode's。我遇到了一个问题,我快要解决了,但我对一件事感到困惑。本质上,我有一个平移手势识别器,允许用户在屏幕上拖动Sprite。我遇到的唯一问题是,它需要一次点击才能真正初始化平移手势,然后只有在第二次点击时它才能正常工作。我认为这是因为我的平移手势是在touchesBegan中初始化的。但是,我不知道该把它放在哪里,因为在SKScene的initWithSize方法中初始化它会阻止手势识别器实际工作。-(void)touchesBegan:(NSSet*)toucheswithEv
我一直在试验UIGestureRecognizers和SpriteKit中的新SKScene/SKNode's。我遇到了一个问题,我快要解决了,但我对一件事感到困惑。本质上,我有一个平移手势识别器,允许用户在屏幕上拖动Sprite。我遇到的唯一问题是,它需要一次点击才能真正初始化平移手势,然后只有在第二次点击时它才能正常工作。我认为这是因为我的平移手势是在touchesBegan中初始化的。但是,我不知道该把它放在哪里,因为在SKScene的initWithSize方法中初始化它会阻止手势识别器实际工作。-(void)touchesBegan:(NSSet*)toucheswithEv
有没有一种方法可以使SKScene的背景透明,并通过透明度在另一个场景上呈现该场景。想法是让所呈现场景的背景像这样:self.backgroundColor=[SKColorcolorWithRed:0.0fgreen:0.0fblue:0.0falpha:0.5f];什么东西能让看到背后的景象变暗。但是这样做是行不通的。背景完全不透明。有办法吗? 最佳答案 在iOS8中,可以设置场景的SKView为允许透明,设置场景的背景色为透明。然后将看到SKView后面的View。UIView*parentView=...;[parentVi