草庐IT

Spritekit

全部标签

swift - 从 Spritekit 中的多个 block 创建一个 "smooth"平面

我正在尝试使用Spritekit和Swift编写一个iOS游戏,这是我关于stackoverflow的第一个问题:)为了简化我的问题和我的约束,假设我有两个高度相同的矩形SKShapeNodes(我的关卡),它们完全并排,具有物理实体但非动态。英雄只是一个方形的SKShapeNode,具有动态物理体,可以在这些矩形的顶部移动。玩家使用加速度计移动英雄。我不确定为什么,但有时,当英雄沿着矩形的顶部滑动时,它会立即停在两个矩形之间的缝隙处,或者似乎被这个缝隙绊倒(小跳过去):(((移动应该是平滑的。是否有一种变通方法可以使两个矩形之间的表面更“平坦”/更平滑,因为我知道我不能为了游戏目的而

swift - 使用 SpriteKit/Views 与 ViewController 显示关卡

我正在使用Swift制作游戏,并希望允许用户选择一个级别(点击它)来玩该特定级别。每个级别都是屏幕上的一个框,其中包含级别编号。因此,如果该区域有20个级别,您会在屏幕上看到20个框,其中包含级别#和名称以及您获得的星星数。我对最好的方法感到困惑。我看到两种方式:您创建一个拥有UICollectionView的ViewController,我将关卡作为数据源输入其中,并在那里处理点击事件。当你点击它时,我可以对相应的游戏场景(SKScene)做一个presentScene来处理正常的游戏绘制。我使用for..循环将关卡直接渲染为屏幕上的SKSpriteNode(关卡框),然后执行add

swift - 如何限制 SpriteKit 中的缩放

我有一个Swift+SpriteKit应用程序,它将SKSpriteNode加载到场景中,注册UIPinchGestureRecognizer,并使用简单的处理函数处理捏合手势,如下所示:funczoom(_sender:UIPinchGestureRecognizer){//Don'tletthemapgettoosmallortoobig:ifmap.frame.width>=1408&&map.frame.width但是,捏合仍会使sprite节点的大小小于指定的限制,然后当我尝试再次松开捏合时,处理程序突然识别出我设置的限制并且将不允许和松开手势.我试过用识别器的比例属性做同样

swift - 粒子发射器未显示在图像上(swift spritekit)

这是一个非常基本的问题(我是swift和spritekit的新手)。所以无论如何我将粒子发射器添加到Sprite节点(称之为球)并将球添加到我的场景中。这个球位于另一个代表背景的spritenode之上。当我运行应用程序时,球看起来很好,但粒子发射器没有显示。当我删除背景时,发射器显示正常,但当我添加背景时,发射器显示不正常。我将发布一个代码示例...//Backgroundletbackground=SKSpriteNode(imageNamed:"Background")background.position=CGPoint(x:CGRectGetMidX(self.frame),

ios - SpriteKit 中的 ScrollView

我发现了其他一些与此类似的问题和答案,但没有一个非常适合我。我的愿景是在屏幕底部有一个水平可ScrollView,我可以在其中滚动浏览看起来像手中卡片的内容。理想情况下,我最终可以将中间的卡片放大一点,并突出显示它以向用户显示选择了哪张卡片。如果我能弄清楚如何调整ScrollView的大小以适应View中Sprite(卡片)的数量,那就更好了。无论如何,我对XCode和Swift还是很陌生,所以我很难接受我发现的东西并改变它。但是,我希望学得快。到目前为止,我所了解的是UIScrollView可以覆盖场景,并且使用可移动的spritenode我可以滚动浏览View。然后View会以某种

ios - swift 3 : Making a Pause Menu in SpriteKit by overlaying a SKView?

上下文虽然有些游戏选择放弃暂停菜单-可能是因为游戏持续时间较短,例如Don'tGrind-我个人认为暂停游戏是一个关键功能,我想学习如何在SpriteKit的Swift3中实现它。我曾看到尝试使用UIAlertController来实现这一点,但我——也许是错误的——认为更好的选择是在顶部覆盖一个SKView当前SKView的。我看过Apple的DemoBots看看我是否能弄清楚他们是如何暂停比赛的。但是,在我的设备上下载并运行后,出现了错误,所以我不想效仿。然而,如果有人能彻底解释过多的文件,如“LevelScene+Pause”、“SceneManager”、“SceneOpera

swift - 将 ARFaceAnchor 与 SpriteKit 叠加层对齐

我正在尝试计算特定几何点ARFaceGeometry/ARFaceAnchor上的SpriteKit覆盖内容位置(不仅仅是覆盖视觉内容)。我正在使用计算出的世界坐标中的SCNSceneRenderer.projectPoint,但结果是y反转并且未与相机图像对齐:letvertex4=vector_float4(0,0,0,1)letmodelMatrix=faceAnchor.transformletworld_vertex4=simd_mul(modelMatrix,vertex4)letpt3=SCNVector3(x:Float(world_vertex4.x),y:Float

ios - SpriteKit 和 Swift : Creating nodes via didBeginContact messes up the positioning

我不知道这是Xcode中的一个奇怪错误还是SpriteKit的坐标系统有什么我不明白的地方。前提是节点的位置总是相对于它的父节点。但是,每当我从SKPhysicsContactDelegate的“didBeginContact”调用创建和定位具有物理体的节点的block时,该节点始终相对于场景(而不是其父级)定位。请注意,在除“didBeginContact”以外的任何地方触发时,调用同一个block都会按预期工作。另一件事是,如果我移除所述节点的物理主体,即使从“didBeginContact”调用时,该block现在也会按预期工作。我已经被这个问题困扰了两天,如果不提供有关我的实际

xcode - 在 Apple Watch 模拟器(xCode 8、Swift 3、iOS 10)上的 watchOS 中运行 SpriteKit 游戏 - libswiftSwiftOnoneSupport 错误

我下载了xCode8.0beta并打开了一个最近写在swift2中的项目然后我将其转换为swift3使用xCode。然后我添加了一个watchOS使用设置“游戏”定位到我的项目文件>新建>目标:我检查了WatchExtension中的GameScene.swift果然所有的代码都在那里并设置了一个场景:importSpriteKitclassGameScene:SKScene{privatevarspinnyNode:SKShapeNode?overridefuncsceneDidLoad(){ifletlabel=self.childNode(withName:"//helloLab

swift - 将 SKS 文件链接到 SpriteKit 中的自定义类

我是Swift的新手,我正在尝试使用SpriteKit编写一个简单的游戏。我正在尝试为“开始”按钮创建一个主菜单页面。我制作了一个.sks文件和.swift(cocoatouchclass)同名文件。我按照自己的意愿设计了.sks,但cocoatouch类不起作用。.swift代码:importSpriteKitclassMenuScene:SKScene{varmStartBtn:SKSpriteNode=SKSpriteNode()varmLabel:SKLabelNode=SKLabelNode()overridefuncdidMove(toview:SKView){mStart