例如,我创建了SKShapeNode并为它创建了子节点(一个例子是一个十字和它的两条相交线)。十字是parent,相交线是child。你怎么能改变所有parent的child的alpha值?目前正在使用:parent.alpha=0.5不会改变它的child的alpha值。如果有人能够创建可以解决此问题或使用任何其他方式的着色器,请回复。这篇文章是对我之前的帖子的回应:(Swift:Maketranslucentoverlappinglinesofthesamecolornotchangecolorwhenintersecting)如果有人能够解决这个问题,我正在尝试使半透明线相交的暗
我创建了一个分成象限的圆。我试图使每个象限的末端在每个象限之间具有给定的间隙,但我得到了一些奇怪的行为。我想我错过了什么。下面是我得到的图像和相关代码。我希望末端与AppleWatch事件环的末端相似。classGameScene:SKScene{letradius=CGFloat(100)vartopRightPathNode:SKShapeNode!varbottomRightPathNode:SKShapeNode!varbottomLeftPathNode:SKShapeNode!vartopLeftPathNode:SKShapeNode!overridefuncdidMov
似乎在从纹理图集中提取纹理时,我现在正在生成新纹理,而不是在iOS10的不同Sprite之间使用相同的纹理。在iOS9上,这按预期工作。还有其他人遇到这个问题吗?也许有一个我错过的步骤现在已成为iOS10的一部分。注意:我创建了一个示例项目并创建了一个新的图集,然后将宇宙飞船拖到@1x中,我也尝试过预加载,但也没有任何效果。代码:letatlas=SKTexturAtlas(named:"Sprites")vartexture=atlas.textureNamed("Spaceship")print("\(Unmanaged.passUnretained(texture)),\(Unm
我想使用我自定义的SKNode子类创建一个关卡。我尝试将SKNode添加到场景编辑器,并使用“自定义类”选项卡提供我想要的类,但这绝对没有任何作用。该节点仍然是空的,当我运行模拟器时什么也不会显示。此外,为了确保该类确实有效,我以编程方式将它的一个实例添加到场景中,以查看它是否显示并且确实显示了。如何通过场景编辑器将我的自定义节点添加到场景中?这是我的自定义类代码:classPlayer:SKSpriteNode{requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)print("Test")self.addChi
在以前版本的SpriteKit中,原点(0,0)总是在左下角。此外,默认情况下,Node会添加到它们的父级。似乎从Xcode8开始,新的默认原点在屏幕中央。这是正确的行为,是测试版中的错误,还是我根本不了解SpriteKit?两者使用相同的代码importSpriteKitimportGameplayKitclassGameScene:SKScene{overridefuncdidMove(toview:SKView){letship=SKSpriteNode(imageNamed:"Spaceship")addChild(ship)}}Xcode7:Xcode8:
尝试子类化SKSpriteNode以使我的游戏代码更清晰,但我显然不理解某些东西。这是一个非常简单的示例:我创建了一个名为Alien.swift的新Swift文件,其中包含以下内容:importSpriteKitclassAlien:SKSpriteNode{}在我的游戏中,我会:letalienSprite:Alien=Alien()print("It'san\(alienSprite)")我得到:It'san(SKSpriteNode)name:'(null)...'甚至Xcode都说它是“aliensSprite”:为什么在运行时,它不打印它是一个“alienSprite”?编辑
下面是我的“Floor.swift”类,下面基本上是一堆墙。我有来自屏幕顶部的对象,一旦Floor和SKSpriteNodes发生碰撞,我希望SKSpriteNode被移除。下面是我的Floor类。importFoundationimportSpriteKitclassFloor:SKNode{overrideinit(){super.init()letleftWall=SKSpriteNode(color:UIColor.clear,size:CGSize(width:5,height:50))leftWall.position=CGPoint(x:0,y:50)leftWall.p
我正在学习Swift和SpriteKit。我在Xcode6中创建了新的SpriteKit&Swift游戏项目并编辑了文件GameScene.swift。我没有碰其他文件。问题:当球弹跳时,它受到顶部和底部的限制,但当它向左侧或右侧移动时,它不受限制并消失,但似乎右侧和左侧限制在那里,但它们不在屏幕边缘因为球过一会儿又回来了。这是我的GameScene.swift:importSpriteKitclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){self.backgroundColor=SKColor.whiteCo
我的目标是让secondBody以恒定速度(在本例中为500)“绕”firstBody。基于ConstantmovementinSpriteKit我已经实现了以下内容:overridefuncdidMoveToView(view:SKView){physicsWorld.gravity=CGVector(dx:0,dy:0)letfirstNode=SKShapeNode(circleOfRadius:10)addChild(firstNode)firstNode.position=CGPointMake(CGRectGetWidth(frame)/2.0,CGRectGetHeigh
问题:SKScene中的update(currentTime:)函数在每一帧都使用currentTime参数调用。我想知道如何在不使用update函数的情况下从update(currentTime:)使用的同一来源获取时间。我只找到了不同的CFAbsoluteTimeGetCurrent()。原因:要计算timeSinceLastUpdate,您需要一个名为timeOfLastUpdate的实例变量。要实现timeOfLastUpdate,您需要在第一次更新之前将其设置为任意值,这会使timeSinceLastUpdate的第一次计算不正确。你可以有一个简单的if语句来检测这个或使用可