问题标签 [sktilemapnode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 将瓷砖变体添加到 SKTileGroup
如何向我的 SKTileGroup 添加一个瓷砖变体(例如,我想要一个普通的草瓷砖,然后是一个上面有花的草瓷砖,以及另一个有红色花朵的草瓷砖等)?
这是我的 SKTileGroup 声明
swift - 为什么我的瓷砖纹理不断重新采样/模糊?
我在我的 gamescene.sks 文件中设置了一个 tilemapnode,这些图块为 16 像素 x 16 像素,但放大到 128 像素。起初它们看起来不错,但如果我稍后开始编辑或添加新图块,旧图块会自动重新采样,并且与新图块相比看起来非常模糊。知道为什么要这样做以及如何解决吗?
swift - 在 SpriteKit 中的 TileMap 上连接物理体
我使用以下函数将物理体附加到来自 SKTileMapNode 的图块上:
但是,如果我使用它,我每个图块都有一个物理体。我想将物理体连接到更大的物理体以获得更好的性能。我知道这可以与init(bodies: [SKPhysicsBody])
. 但我该怎么做呢?
我怎样才能找出哪个身体紧挨着另一个身体来对它们进行分组?
tileMap 中的物理体并非彼此相邻。有些是大块物理体,有些是单个物理体,旁边没有任何物体。所以我不能简单地将每个物理体放在一个数组中并将它们分组。
这是一张图片,显示了它目前的样子。
我希望解释足够清楚。如果没有,我会尝试更好地解释它。
有没有人这样做过并且可以指出我正确的方向?我将不胜感激任何帮助。
编辑:在我尝试这个之前:
但是当我这样做时,物理体完全搞砸了..
swift - 编写此比较的更好方法
我为“更好”的使用道歉,但这就是我真正需要的。
我正在编写一个“河流”生成算法,我需要进行大量比较。我想知道是否有更好的方法来编写我必须进行的所有比较。
基本上,“Rain”是一个 perlin HeightMap,我用它来确定我的 tileMap 中的降雨量。这些 if 语句检查 fullMap 中的 8 个相邻图块(满足高降雨量标准)并确定最小值,然后以河流的形式设置水图块。
这种方法非常低效,因为我将继续将 if 语句写入这些 if 语句中,以便在此之后检查每个相邻的图块。这将是一大块代码。有没有更好的方法来检查 tileMap 中某个图块周围的每个相邻图块以减小代码的大小?
swift - 捏手势不适用于 SKCameraNode
我正在使用带有 SKTileMapNode 和 SKCameraNode 的 SpriteKit 使用 Swift 4。我希望能够使用相机在瓦片地图节点上平移/捏合/缩放。我的平移效果很好,但在捏/缩放方面遇到了一些问题。
虽然我可以工作。每次发生另一次捏合时,它都会重置大小。因此,例如,我将其缩小,然后再次捏合,一旦我触摸屏幕,它的大小就会跳起来。它确实让我再次捏以放大/缩小,但不是基于我在之前捏的大小。我想我可能需要存储调整大小并使用它,但不确定如何。
我的捏缩放是相反的。当我捏放大时,它会缩小,反之亦然。
当我达到最小/最大比例限制时,它会停止走得更远,但在达到限制时会结结巴巴。
这是我处理夹点的函数:
如果您有任何建议,请告诉我,因为我环顾四周,但找不到人们使用 SKCameraNode 的示例。我发现的示例要么我无法尝试从视图转换为相机,要么它们没有给出一个捏的例子。任何帮助将不胜感激!
sprite-kit - SpriteKit 内存泄漏更改包含 SKTileMapNodes 的场景
我正在尝试使用 Swift、SpriteKit 和 SKTileMaps 创建一个简单的 2d 平台游戏。但是每次我在包含 SKTileMaps 的场景之间切换时,我都会在 Xcode Instruments 中看到很多内存泄漏。
我已经尽可能简单地重现了这个问题。我正在使用 .sks 文件来创建场景,并且该文件仅包含 1 个填充了一些图块的 tileMap。
视图控制器中用于呈现场景的代码:
场景代码:
我选择 GameScene 作为 .sks 场景文件中的自定义类。
每次我改变场景时,这都会导致很多小的内存泄漏:
这是只有一个场景变化的泄漏。我做错了什么还是这是一个 SpriteKit 错误?
编辑1
SKCTileMapNode::_ensureChunkForTileIndex(unsigned int) 泄漏发生在我每次加载瓦片地图时,而其余的仅在更改场景时出现
编辑2
更改 GameViewController 以跳过 LoadingScene 并直接进入 GameScene。内存泄漏仍然存在:
swift - SKTileMapNode 未加载到正确的大小
对于我目前正在进行的一个项目,我有两个 SKTileMapNodes 堆叠在一起。它们在行数、列数以及图块大小上有所不同。但是,它应该相等,以便它们具有相同的整体宽度和高度。
问题是尽管行、列和图块大小正确,但其中一个图块图的大小不正确。
第一个 SKTilMapNode(正确大小)
第二个 SKTileMapNode(大小不正确)
在游戏场景中初始化
结果
swift - 仅将物理添加到我视图中的精灵
我有一个 tileMap,其中有一些 tileNodes,我希望只为屏幕视图中的 tileNodes 提供物理,并且当玩家导航世界时,进入屏幕视图的 tileNodes 得到物理,而 tileNodes 出去屏幕视图删除他们的物理。任何帮助将不胜感激,即使这意味着完全重做我的代码。谢谢你。
这是我如何在我的瓷砖中添加物理...
玩家在 touchesBegun 中使用这个函数为英雄添加了一个冲动...
我创建了一个 tileNode 类,它将激活和停用节点,我只是不知道其余代码应该是什么样子......
根据我在网上找到的一些东西,似乎我需要使用 didSimulatePhysics() 但我不知道如何..
ios - TileMap 集中的自定义组未选择正确的图块
我用周围瓷砖的所有可能组合制作了一个自定义组。
我将它与我的 TileMap 上启用的自动映射模式一起使用,结果如下:
如您所见,有几个错误:
我以编程方式和在编辑器中都尝试过。行为是相同的。
我的想法是自动映射引擎在处理角落(左上方,右下方)时采用第一个匹配元素。以下是一些错误,与引擎应该采用的元素相关联:
所有错误的都在匹配的瓷砖之前。但是我找不到任何方法来重新排序图块来测试这个理论(在编辑器中,甚至在配置文件中,因为组在二进制文件中)。
有没有办法解决这个问题?
在此先感谢您的时间。
编辑
我试图删除并重新创建一些错误的图块,它证实了这个理论:在处理角度时,自动映射引擎会采用第一个匹配元素,即使其中的角被禁用。它不会检查是否有更好的瓷砖匹配角规则。
问题保持不变:有没有办法纠正这种行为,还是我必须编写自动映射引擎的代码?
ios - 在给定 4 个角位置的情况下,无法编写算法来填充平铺地图
我正在构建一个算法来使用 Swift 4 和 SpriteKit 以程序方式生成地牢。我已经完成了生成房间的部分,但现在我需要一些帮助来划分房间。
这是我用来确定房间大小、四个角的坐标以及房间在 tileMap 网格中的位置的片段。
我从这篇文章改编了这段代码。
继续这篇文章,我从房间生成器中收集信息并将其放入我可以访问的数组中,这样我就可以在 tileMap 中划分房间。
但现在我开始使用所有信息在 tileMap 中划分房间。我有四个角位置,我只需要知道如何填写它们之间的所有内容。这是我到目前为止所得到的:
编辑: ^^这是您唯一需要关注的部分,以防您感到不知所措。我只需要知道如何获取 4 个角坐标并填写其间的所有内容。