问题标签 [sklightnode]

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 回答
2055 浏览

ios - SKLightNode 性能问题

我一直在尝试使用SKLightNodeSpriteKit(iOS8 中的新功能),即使在一个非常简单的测试用例中,我的性能也很糟糕。例如,使用纯色上的单个光源,我在第三代 iPad上获得13.2 FPS。如果我添加第二个光源,它会下降到糟糕的7.7 FPSSKSpriteNode

WWDC 会议视频What's New in SpriteKit提到,如果您在同一个精灵上拥有多个灯,您可能会获得不到 60 FPS,但我什至无法获得 60 FPS。这是相关部分。

这是我的快速测试场景(它从一个光源开始,可以通过点击添加更多):

以下是它在我的第三代 iPad 上运行的一些屏幕截图:

1个光源 2个光源

这是使用单个光源运行时单击“分析”按钮后性能选项卡的外观:

性能分析

这显然是受 GPU 限制的,但我想弄清楚的是我是否只是在做一些可怕的错误,或者这只是测试版的一个问题,(希望)会在发布时间之前得到解决。我目前正在使用 Xcode6-Beta5。


更新

我将我的 iPhone 5S 升级到 iOS8 并在那里尝试了同样的事情,它在 60FPS 和 8 个光源下运行得非常好。所以,我想这只是第三代 iPad 的 GPU 无法胜任任务的问题。我会在下一个测试版发布后重试,看看是否有任何变化,以防万一。

0 投票
2 回答
2086 浏览

sprite-kit - SKLightNode 投射阴影问题

我没有成功让 SKSpriteNode 投射阴影,并且在从同一光源进入阴影时也会消失。我能够做到两者之一,但不能两者兼而有之。

根据文档:如果精灵位于灯光投射的阴影内,并且精灵的 z 位置低于灯光,则阴影会影响精灵的照明方式。所有这些我都做过。我的 SKLightNode 的 zPosition 为 100,所有其他节点的 zPosition 都较低。

我已经尝试了 LightingBitMask、shadowCastBitMask 和 shadowedBitMask 的任何和所有设置组合,但没有任何效果。

我正在发布重新创建我的问题的隔离代码。蓝色的盒子投下阴影,但没有被墙影覆盖。紫色的盒子没有阴影,被墙影覆盖。

灯光会响应触摸移动,因此您可以随意在屏幕上移动它。该项目处于横向模式。

我错过了什么或没有看到什么?

0 投票
1 回答
1023 浏览

ios - 如何使用 SKLightNode 在中午的阴影中获得阳光

我在玩 SKLightNode。我正在尝试创建阴影,使其看起来像太阳在中午。所以基本上是这样的:

在此处输入图像描述

但是,我可以让 SKLightNode 为我渲染的是:

在此处输入图像描述

所以问题在于,看起来光是从物体旁边的同一层发出的。

我玩过 SKLightNode 配置,但这就是我目前所拥有的(我尝试了许多似乎没有任何效果的配置)

0 投票
1 回答
662 浏览

ios - How to make shadows shorter in SpriteKit?

I don't want shadows to be that long (sorry, can't post pictures yet). Is there any property for SKLightNode, like distance, to make shadows shorter? And if not, how do you usually implement dynamic shadows in SpriteKit?

0 投票
1 回答
951 浏览

ios - 如何在 SKShapeNode 中添加光照效果

我正在使用 SpriteKit,SKLightNode 是否只能与 SKSpriteNode 一起使用?因为 SKShapeNode 上没有 shadowCastBitMask 属性,所以我无法使 SKLightNode 与 SKShapeNode 一起工作。有没有办法让他们一起工作?谢谢!

0 投票
1 回答
669 浏览

sprite-kit - Spritekit SKLightNode:光碰撞检测

我的问题是如何检测场景中的任何精灵是否受到光节点的影响。

没有找到与此问题相关的任何内容。SKLightNode 是否有类似 didBeginContact 的委托方法?

0 投票
1 回答
155 浏览

ios - iOS 8 检测 SKSpriteNode 是否被 SKLightNode 点亮

我的场景中有几个精灵节点正在投射阴影。我还有一个位于其中一个阴影中的精灵。我希望能够判断用户是否将精灵从阴影中移到灯光中。无论如何要迅速做到这一点?谢谢。

0 投票
0 回答
638 浏览

sprite-kit - SKSpriteNode 照明不适用于 SKTextureAtlas 中的纹理

我遇到了 SpriteKit 的问题(在 OS X 10.11 beta 上尝试了 Xcode 7 beta 和 Xcode 6.4),如果我从单独使用时工作的图像和正常文件创建 SKTextureAtlas,则正常映射光照会发生故障。看这个例子:

在此处输入图像描述

从左到右:

  • 带有纹理 + 法线 + 光照的精灵(来自地图集的纹理)
  • 具有纹理 + 法线的精灵(来自图集的纹理)
  • 带有纹理的精灵(来自地图集的纹理)
  • 具有正常纹理的精灵(来自图集的纹理)
  • 带有纹理 + 法线 + 光照的精灵(通过 imageNamed 从单个文件创建的纹理:)

该图集是在运行时使用 SKTextureAtlas atlasWithDictionary: 创建的,它包含以下纹理:

注意:如果我在 Xcode 中创建 Atlas 并通过 atlasNamed 加载它,我会遇到完全相同的问题: - 所以问题绝对不在于创建地图集的方式或时间,而是因为纹理是从第一个地图集中获得的地方。

如果我使用单个文件创建精灵,则照明工作(最右边的图像):

我对图集文件做了完全相同的事情,上面的屏幕截图证明我确实获得了精灵纹理的正确图像(左起第 3 和第 4 个),并且正常作为图集中的纹理。然而,结果是左起第一张图像,一个没有法线贴图的光照精灵。

我想知道,普通纹理是否需要一种 SKTextureAtlas 不适用的后处理形式?或者其他人在地图集中有正常纹理的问题吗?

或者这可能是一个错误?


更新:我在一个新的 SpriteKit 应用程序(OS X,在这里下载并自己尝试)中重现了这种行为,代码如下:

0 投票
1 回答
618 浏览

ios - SKLightNode 未出现在 Sprite Kit 中

我的光:

在更新时,我将灯光位置更改为角色位置。

我尝试了一切,只是看不到我的光。

0 投票
1 回答
734 浏览

ios - 如何在 iOS 中增加 SKLightNode 的大小

我正在玩 SKLightNodes 并试图让一个物体(太阳)照亮它周围的任何东西。问题是当我将 SKLightNode 添加到太阳节点时,SKLightNode 只出现在太阳的正中心。我试过缩放 SKLightNode,但它似乎对 SKLightNode 的大小或范围没有影响。以下是 SKLightNode 的实现方式。

如果有人对我如何提高光源的效率有任何意见,我肯定会很感激。