在场景的右上角或左上角添加标签的最佳方法是什么?它应该是跨设备的。letheight=self.frame.size.heightletwidth=self.frame.size.widthlabel.fontSize=50label.verticalAlignmentMode=.Toplabel.horizontalAlignmentMode=.Leftlabel.position=CGPoint(x:2,y:height-2)但它不会在角落里。怎么了? 最佳答案 在SpriteKit中,场景坐标的默认原点在屏幕的左下角。因此,如
编辑3:嗯,我已经解决了这个问题。似乎在iOS8中,您现在可以从scene.sks文件加载场景。所以在这种情况下,游戏正在加载一个分辨率为1024x768的.sks文件。这就是图像未正确显示的原因。将ViewController更改为在iOS8之前工作(这里有解释:SwiftandSpritekitwon'trunondevicerunningiOS7.1)似乎可以解决问题。感谢所有试图帮助我的人。:D我正在使用最新的Xcodebeta在SpriteKit和Swift中创建游戏(好吧,我正在移植我已经在Obj-C中制作的游戏)。我有一个问题,那就是SpriteKit似乎没有正确渲染我的
将触摸检测限制在图像Sprite的mask区域的正确方法是什么?下面的代码(理论上)是我希望它如何工作的。它是一个巨大的彩色方block,上面覆盖着宇宙飞船的形状。当用户触摸时,我只希望被遮盖的部分响应触摸。在下面的代码中,事件被忽略(可能是因为cropNode.maskNode是一个属性,而不是一个子节点)。我尝试过其他方法,但都没有将触摸限制在蒙版区域。问题是..这应该如何完成?overridefuncdidMoveToView(view:SKView){letcropNode=SKCropNode();letmostlyHiddenSprite=SKSpriteNode(colo
我试图在离开场景时删除节点,我尝试了这种方法来做到这一点if(CGRectIntersectsRect(node.frame,view.frame)){//Don'tdeleteyournode}else{//Deleteyournodeasitisnotinyourview}但它似乎不起作用任何帮助将不胜感激 最佳答案 从性能的角度来看,这不是最好的方法,但如果您在场景中重写update方法,您将能够编写每帧执行的代码。classGameScene:SKScene{vararrow:SKSpriteNode?overridefun
我在我的SpriteKit项目中创建的是由大约160个Sprite节点组成的大型二维平铺背景。但对我来说,这似乎非常低效。将这些节点置于单个父节点下是否会使它们更有效率?我假设不会,在那种情况下,他们是否有一种在运行时将纹理本身组合到单个节点中的方法?我会简单地使用图像编辑器来平铺这些图像,但由于我项目中的其他因素,所述背景的大小会因设备而异。 最佳答案 你可以做什么,在你的加载阶段,创建160个Sprite节点,使你的背景在1个父节点下,然后调用lettexture=scene.view.textureFromNode(paren
我正在制作一个简单的游戏(使用Swift和SpriteKit),我有一个可以四处拖动的圆圈。但圆圈不允许穿墙。我的碰撞BitMask完美运行,但是当我拖动得足够快时,圆圈最终会穿过墙壁。PlayerSprite的初始化是这样的:funcinitPlayerSprite(){letplayerTexture=SKTexture(imageNamed:"player.png")letoriginX=CGRectGetMidX(self.frame)letoriginY=CGRectGetMidY(self.frame)player=SKSpriteNode(texture:playerTe
我想添加一个矩形,其中一个角是用户第一次触摸的地方,另一个角是用户离开的地方。我还希望在用户拖动手指时显示矩形。overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition1=touch.location(in:self)varx1=position1.xvary1=position1.yfunctouchesEnded(_touches:Set,withevent:UIEvent?){fortouchintouches{letposition2=touch.locatio
所以在我的项目中,我基本上是在尝试制作一个随机生成的迷宫,其入口和导出都是随机的。到目前为止,我有三个类(一个迷宫类、一个游戏场景类和一个网格类),我已经成功地编写了一个随机生成的迷宫。但是我的问题是迷宫类(这是随机生成代码发生的地方)纯粹包含迷宫的数据,但没有与图形的当前连接。因此,当我运行我的应用程序时,会出现一个空白屏幕。我正在尝试(但不确定如何)做的基本上是在迷宫墙所在的位置放置一条线(又名一条线形的黑色Sprite)。因此,我的迷宫的工作方式是它是一个网格(数组),其中每个数组单元格的“墙”(上、下、左或右)被定义为真或假。如果细胞壁是假的,那么那里就没有迷宫墙;但如果这是真
overridefuncupdate(currentTime:NSTimeInterval){//...}当我的游戏结束时,我想停止spritekit的更新。我应该在swift中使用哪个函数? 最佳答案 你可以使用bool就像当你的游戏结束时只是让true并将if条件放在你的更新方法中,如:overridefuncupdate(currentTime:NSTimeInterval){//ItwillexecutetillgameOverisfalsebutwhenyoumakeyourgameOvertruethenitwillno
我来自HTML和javascript开发,在HTML中,我们有iframe标签。我想知道我是否可以像iframe一样在SKNode中放置一个场景。任何帮助将不胜感激。 最佳答案 您可以将场景添加到场景(或另一个节点),但在这种情况下,作为子节点添加的场景将充当普通的SKNode。因此,简而言之,您正在尝试的操作毫无意义,因为子场景的update:方法不会触发。它实际上意味着每个SKView只有一个场景(SKView只有一个scene属性)。虽然您可以有多个SKView实例,但这是另一个话题,如果您这样做并遇到一些问题,请随时发布新问