问题标签 [skcropnode]

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.

0 投票
1 回答
339 浏览

swift - SKCropNode 未在 SpriteKit 中呈现灰度蒙版值

我有一个工作正常的 SKCropNode,除了一件事 - 蒙版图像中不是黑色或白色的所有灰度值都设置为纯白色。在此处输入图像描述

这意味着所有灰度 alpha 值都不会以透明度进行渲染,而只是被设置为完全不透明。

这是我的代码:

有谁知道为什么将灰度区域设置为白色或者我如何才能达到预期的效果?提前致谢!

0 投票
0 回答
341 浏览

ios - 忽略 Scene Kit overlaySKScene 中的兄弟顺序

我在 Scene Kit 中使用了一个 overlaySKScene。在那个 SKScene 中,我使用遮罩节点来裁剪 SKCropNode。掩码节点在 Mac OS X 上运行时完美运行,但当我在 iOS 上运行时它不起作用。

我认为这是因为 iOS 忽略了兄弟顺序,并且掩码节点显示在 SKCropNode 后面。当我尝试设置

在 SKScene 中,它崩溃并说:

GameView 是 SCNView 的子类,所以我知道 SCNView 没有“ignoreSiblingOrder”属性。

我该如何解决这个问题?我是以错误的方式接近这个吗?在 iOS 上运行时,它是 Scene Kit 中的错误吗?

0 投票
1 回答
64 浏览

ios - SpriteKit中“非均匀缩放的纹理”是什么意思?

SKCropNode类参考中,给出了一些指定掩码的示例。

他们来了:

这意味着裁剪节点可以使用从一件艺术品派生的简单蒙版,但它也可以使用更复杂的蒙版。例如,以下是您可以指定掩码的一些方法:

  • 将内容限制在场景的矩形部分的无纹理精灵。

  • 带纹理的精灵是精确的每像素蒙版。但也要考虑非均匀缩放纹理的好处。您可以使用非均匀缩放的纹理为可调整大小的用户界面元素(例如健康栏)创建蒙版,然后用动态内容填充蒙版区域。

  • 一组节点可以动态生成一个复杂的掩码,该掩码在每次渲染帧时都会发生变化。

第二个例子介绍了非均匀缩放的纹理:这是什么意思?

这无助于我理解第二个例子!

0 投票
2 回答
700 浏览

ios - 如何使用 Sprite Kit 创建具有 3D 效果的戒指?

在此处输入图像描述在此处输入图像描述

我想使用 Sprite Kit 创建一个具有 3D 效果的戒指。(见图片)

我尝试将 SKNode 子类化并添加两个节点作为子节点。(见代码)

一个节点是完整的 SKShapeNode 椭圆,另一个是使用具有更高 zPosition 的 SKCropNode 的半椭圆。

看起来不错,但 SKCropNode 将应用程序 CPU 使用率从 40% 提高到 99%。

关于如何降低 SKCropNode 性能成本的任何想法,或创建相同环 3D 效果的任何替代方法?

0 投票
0 回答
298 浏览

ios - SKCropNode 问题

在这上面花了一整天。我在 iOS 文档或 SO 上找不到这个。

SKShapeNode*在我的应用程序中有一个类似于窗口的窗口,我添加了一个作为背景的背景SKSpriteNode,并且背景还有另外 10 个SKSpriteNode作为其子级。所以节点树是这样的:

SKScene -> window -> background -> (child1, ..., child10)

尺寸使得背景与窗口的大小相匹配,并且所有背景的孩子都适合背景。

我想在窗口内单击时进行缩放(让背景和 10 个孩子一起缩放)。我通过设置背景的 xScale 和 yScale 来实现这一点,并且孩子们继承了这个缩放比例。但我也不想溢出窗口的边界,所以我制作了一个 SKCropNode,并将背景添加为它的子节点。现在背景不会溢出:

SKScene -> window -> SKCropNode -> background -> (child1, ..., child10)

问题是,缩放时背景的孩子会溢出。这对我来说是违反直觉的。我尝试在线搜索并查看文档,“SKCropNode 是否裁剪其子代和所有后代”?由于答案似乎是否定的,我想将所有 10 个孩子的父母从背景更改为 SKCropNode:

SKScene -> window -> SKCropNode -> (background, child1, ..., child10)

现在我缩放 SKCropNode。这会缩放背景和所有孩子,但现在它再次溢出到窗外。(在游戏后期,孩子的数量可能会从 10 个增加到 300 个,我不想对 300 个项目做一个 for 循环。所以我希望能够只在一个父母身上设置比例。)

我终于决定尝试一些“hacky”的东西。这是我在网上找不到的任何地方,所以我想知道我是否处于“未定义行为”领域。

SKScene -> window -> SKCropNode1 -> SKCropNode2 -> (background, child1, ..., child10)

我在原来的 SKCropNode 之上添加了另一个 SKCropNode。现在,我只缩放 SKCropNode2。这行得通。但是,现在我的行​​为变得非常奇怪。我的 SKShapeNode 按钮(完全在窗口外)会一个一个消失,然后回来,像这样循环。此外,右下角的“nodes: 10, 60.0 fps”也会消失并在循环中返回。循环我的意思是我在窗口内单击缩放。看来我在 SpriteKit 中遇到了一个错误?我将按钮的 zPosition 设置为 20,比其他任何东西都高(5 及以下)。我还设置skview.ignoresSiblingOrder = false;了感谢有关如何完成此操作的任何帮助或建议!

编辑:在回复评论时,我没有使用模拟器。我在运行 iOS 9.2 的 iPad Pro 和 iPhone 6+ 上对此进行了测试。下面是我编译和重现行为的代码。我还取出了缩放代码,但它仍然可以重现。请尝试点击宇宙飞船(Apple 的示例图像)大约 30 次,然后您将开始看到它。

主场景.h

主场景.m

游戏视图控制器.m:

编辑 2:我删除了嵌套SKCropNode,因此只有 1 层 SKCropNode。在飞船上点击几下后,按钮精灵消失了。

0 投票
0 回答
91 浏览

iphone - SpriteKit SKCropNode 在真实设备 IOS 8.3 上显示全绿色

我正在使用带有标准 XCode Swift 游戏模板的简单 SKCropNode。在模拟器中一切正常,但在带有 iOS 8.3 的真正 iPhone 4S 上,我只看到一个绿色蒙版(虽然我的形状是红色的)——没有显示纹理精灵。有趣的是,在装有 iOS 9 的 iPhone 5S 上一切正常。所以问题出在 iPhone 4S 或 iOS 8.3

这是 我可以将设备更新到 iOS 9的问题的屏幕截图,但我也在考虑支持 iOS 8 用户。这是可以修复的,还是苹果的错误?

这是要重现的代码,它基于 XCode 的标准 SpriteKit 游戏模板:

0 投票
0 回答
103 浏览

swift - 迅速。在 SKSpriteNode 上屏蔽 SKTexture

好的,所以我有一些问题,试图在 SKSpriteNode 的顶部屏蔽 SKTexture。我一直在寻找 SKCropNode,但无法弄清楚。(我对此有点陌生)

我如何屏蔽这个 SKTexture:(这是名为“Mask”的图像)

照片

在这个 SKSpriteNode 之上:

照片

所以它会变成这样:

照片

我试过这个,但没有出现:

0 投票
1 回答
466 浏览

swift - 使 SKLabelNode 作为 SKShapeNode 的裁剪节点

在网络上找不到,如何使 SKLabelNode 裁剪 SKShapeNode。当我给背景上色时,我的目标是用同样的方法给标签上色,所以它们都必须同时上色。但是无法想象如何用这个标签裁剪 SKShapeNode。请帮帮我!

0 投票
1 回答
96 浏览

xcode - SpriteKit的SKCropNode:位置和比例之间的关系?

我已经开始使用 SKCropNode 进行编程。我的目的是将给定的图像分割成更小的块(它们以后可能不是矩形)用于游戏(用户必须将这些块移动到正确的位置)。

学习代码很简单,如下:

代码运行良好并显示裁剪的图像,我可以理解当改变一些东西(如大小或位置)时,比如 sprite1。

但是,在更改 sprite1、mask1 和crop1 的几个位置时,我完全迷失了方向,特别是在为 sprite1 或crop1 添加比例时。例如,如果将给定图像缩小为 0.35,然后分成 5 x 5 块,我不知道如何获取/显示块 {0, 0} 或 {4, 3} 然后将它们显示在原始位置。换句话说,我无法控制裁剪的内容和位置。

有人可以给我一个关于这些位置(sprite1,mask1和crop1)之间关系的提示或简短的导师,包括它们的比例,关于游戏的目的(例如,我不需要缩放所有东西,只需要缩放和位置需要什么)?或者还有其他更简单的实现方式吗?

0 投票
1 回答
586 浏览

swift - 为 SKCropNode 分配多个掩码

例如,我有一个在屏幕上向左然后向右移动的圆圈。我希望圆圈仅在两个特定正方形(maskNodes)内时才可见。我正在使用 SKCropNode 来尝试实现这一点,但 SKCropNode 掩码只允许我分配一个掩码。有谁知道将两个或多个掩码分配给 SKCropNode 的方法,或者是否有可能这样做。谢谢!