我想合并一个SKShapeNode和一个SKLabeNode只做一个节点这是我的“Bloque”类,它绘制了一个矩形并在其上添加了一个sklabelnode子节点:classBloque:SKShapeNode{varcolor:String!varnumero:Int!vartype:Int!varlabelNumeroBloque:SKLabelNode!init(type:Int,numero:Int,tailleBloque:CGSize){super.init()self.numero=numeroself.type=typeswitch(type){case0:color=
当我使用SKShapeNodes而不是SKSpriteNodes时,我的游戏菜单出现了这个奇怪的问题。菜单基本上是SKNode的子类,只是有不同的SkSpriteNodes作为按钮,它非常简单。最近我将SKSpriteNode按钮更改为SKShapeNodes,因为它给了我一些额外的好处(圆角、笔触等)。但是,当显示游戏菜单时,问题现在就开始了。基本上,如果在我的游戏菜单中按下“homeScreen/MainMenu”按钮,场景转换就会发生到另一个SKScene。问题是,当场景转换完成后,我仍然可以短暂地看到SKShapeNode按钮大约1-2秒,然后它们消失了。有时它只是按钮,有时它
当我更改SKShapeNode的.alpha时,它的stroke显示自己好像节点的.strokeColor比它的.fillColor更亮。将.lineWidth设置为0会取消笔画提供的抗锯齿平滑度。将.strokeColor设置为SKColor.clearColor也是如此。问题在更改node.alpha时使描边看起来与填充相同并保持边缘的抗锯齿平滑度的最佳方法是什么? 最佳答案 虽然可以直接通过获取节点的“颜色”HSBA并重新分配具有不同alpha到stroke(更多信息请查看thisanswer),因为节点的fill覆盖了节点的
我在处理SKShapeNode的位置时遇到了问题。我正在存储用户触摸屏幕的路径。然后我创建一个多边形并将其放入pathOfShape变量中。我创建了该路径的SKShapeNode并且一切正常。我将用户绘制的多边形整齐地绘制在屏幕上。但是我想在多边形上添加更多东西。出于某种原因,我无法获得SKShapeNode的位置。相反,如果我尝试使用position属性,它会指向x:0.0,y:0.0,如下所示。这里发生了什么?我怎样才能得到我的SKShapeNode的实际位置?varpathOfShape=CGPathCreateMutable()//pathofpolygonaddedheret
我更改了我的SKSpriteNode的anchor,但似乎SKPhysicalBody不正确。如果不设置我的Sprite的anchor,它会出现在屏幕外一点,使用anchor修复了这个问题。但是设置anchor后,body还在之前的位置(改变anchor之前)funcaddGround(){letgSize=CGSizeMake(self.size.width/4*3,120);letground=SKSpriteNode(color:SKColor.brownColor(),size:gSize);ground.name=gName;ground.anchorPoint=CGPoin
我在蓝色spaceship上放了一个圆形攻击椭圆,如果任何SKSpriteNode进入SKShapeNode(攻击椭圆),蓝色spaceship可以向SKSpriteNode。问题是我不知道如何进行检测。我已经尝试过物理body,但是,如果没有碰撞,我就无法接触。这是一个例子。我想要紫色/蓝色攻击圈来检测A,B,C,D,E这是我认为您需要的代码。RSSprite是redshipsprite的缩写blueShip.position=CGPoint(x:800,y:400)attackCircle=SKShapeNode(ellipseOfSize:CGSize(width:1000,he
我想在场景的中心画一个椭圆letcenter=(view.scene.position.x,view.scene.position.y)letsize=(view.scene.frame.size.width*0.7,view.scene.frame.size.height*0.7)letellipse=SKShapeNode(ellipseInRect:CGRectMake(center.0,center.1,size.0,size.1))ellipse.strokeColor=UIColor.blackColor()ellipse.position=CGPointMake(cent
在我的SKScene的didMoveToView()中调用此代码:letframe=CGRect(x:30,y:200,width:100,height:100)letpath=UIBezierPath(rect:frame)UIColor.blackColor().setStroke()path.stroke()self.addChild(SKShapeNode(path:path.CGPath))什么都不做。场景是空的(它有默认的SKScene灰色背景)。这里我只是尝试绘制一个黑色未填充的矩形(这是使用SKShapeNode绘制路径的简化版本,原始绘制代码更复杂)。
我有一个游戏,我需要一个SKAction将SKShapeNode的位置向上移动64个单位。这是我需要向上移动的对象的代码。varrect=SKShapeNode(rectOfSize(CGSizeMake(200,200))rect.position=CGPointMake(0,0)我想让它每隔几秒向矩形的y值添加64个单位。所以:rect.position=CGPointMake(0,64)然后rect.position=CGPointMake(0,128)如有任何帮助,我们将不胜感激。 最佳答案 如果你想在1秒内让你的rect平
我试图通过调用node.hash并将新节点存储在一个集合中来检测之前在我的SpriteKit游戏中未发生碰撞的节点之间的碰撞。我看到一段时间后,新节点与我之前调用node.removeFromParent()的节点具有相同的哈希值。我猜是因为我从父级中移除并一遍又一遍地重新创建非常相似的节点,SK会自动回收一些节点。如何从SpriteKit中的节点获取真正唯一的哈希值?如果需要进一步说明,请告诉我。我觉得发布我的代码与这篇文章不太相关。此外,当我使用连接到xcode的手机进行调试时,我无法重现此问题,但我添加了日志记录,显示node.hash对于新创建的节点不是唯一的。有人知道为什么我