问题标签 [sktexture]

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 投票
0 回答
229 浏览

ios - SKPhysicsBody 的 SKMutableTexture。没有发生碰撞。

我正在使用 AVFoundation 来获取实时摄像机源,将像素处理为 alpha 蒙版图像,然后尝试使用该图像在我的 SKView 中创建碰撞边界。球将从该节点的边界反弹。一种增强现实的东西。

所有 AVFoundation 的东西都可以正常工作。这是我遇到问题的碰撞。由于设置 SKTexture 的成本很高,因此我选择了 SKMutableTexture 来更新物理体。我似乎无法让它工作(没有发生碰撞),但是使用带有静态图像的 SKTexture 效果很好。例如,我在作为开发步骤编写的代码中的其他地方有一个树节点(一个不规则的形状,可以让球弹开)。球从它上面反弹得很好,但它们不会从我的实时视频节点上反弹。SKTexture/SKMutableTexture 和 SKPhysicsBody 对象在两个节点之间是不同的,并且创建方式也不同。

树示例很简单,并使用图像创建它的 SKPhysicsBody:

实时视频节点 (self.env) 在 SKScene 中设置如下:

当处理了新的视频帧时,这由 AVFoundationDelegate 调用。

添加一个球

我已经验证了传递给 updateTexture 的像素是必需的。它们是 BGRA 格式。一组这些 BGRA 将全部为 0x00 或全部为 0xFF,由我的 AVFoundation 类处理。我就是无法让这种可变纹理做任何事情。我真的希望我只是俯瞰一个小环境。

如果您想查看更多代码,请告诉我。

0 投票
1 回答
190 浏览

ios - Sprite Kit SKTexture 动画高度意外变化

我正在使用 aSKTextureAtlas为 a 设置动画SKSpriteNode。动画有效,但看起来很奇怪,因为出于某种原因,精灵的高度在动画中发生了多次变化。这也会导致 y 位置发生变化。除了高度和 y 之外,其他一切都保持不变。我能想到的唯一一件事是每帧内有不同数量的透明像素。虽然每个图像的大小相同。即使我使用SKAction.animateWithTextures(atlasFrames, timePerFrame: 0.1, resize: true, restore: false)resize 设置为 true 和 false,问题仍然存在。

0 投票
2 回答
625 浏览

ios - 从 UIImage 设置 SKSpriteNode

我无法从 UIImage 设置 SKSpriteNode。我在 UIImage 上使用桥接器,将图像转换为 SKTexture,然后使用该 SKTexture 创建一个新的 SKSpriteNode,但我的代码不断崩溃,并出现以下警报“线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)”

0 投票
2 回答
256 浏览

swift - SpriteKit 纹理持续时间

我正在制作一个游戏,我有一个在 2 个纹理之间来回切换的节点。我想知道如何在每个纹理切换回前一个纹理之前为每个纹理添加 0.5 秒的持续时间。现在,当我运行游戏时,纹理会立即切换,所以我想延迟 0.5 秒。

我当前的代码:

0 投票
1 回答
178 浏览

swift - 如何使用根据节点移动方式运行的 .xscale?

我正在使用 SpriteKit 制作游戏,其中我有一个节点使用此 SKAction 序列从屏幕的左侧到右侧反复来回移动:

该节点是一个 SKTexture,我正在使用一个名为 WalkRight 的图集。我想要做的是,当 SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(4) 运行时,我想使用 .xscale 来旋转我的 walkRight 图像。我无法弄清楚如何将此代码合并到我的 SKAction 序列中。

下面是我添加地图集的代码,以防需要回答问题。

0 投票
0 回答
153 浏览

swift - 如何更改 SKAction 序列中节点的纹理图集?

SKAction我正在使用 SpriteKit 制作游戏,其中我有一个节点使用以下序列从屏幕的左侧到右侧反复来回移动:

节点是SKTexture,我使用的是名为 WalkRight 的图集。我想要做的是,当SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(4)运行时,我想将节点的纹理更改为我称为 WalkLeft 的不同图集。我不知道如何在我的序列中运行一个动作,让我改变节点的纹理。

我用于添加纹理的代码:

0 投票
1 回答
457 浏览

swift - 是否可以在不是 SKAction 的 SKAction 序列中运行代码?

我有这个 SKAction 序列:

当下面的这部分运行时,我想更改节点的纹理属性,但我不知道如何将其添加到 SKAction 序列中。

0 投票
0 回答
115 浏览

ios8 - 在 for 循环中使用 SKTexture:withImageNamed 加载动画在播放 30 + 动画后崩溃

我下面的代码从像 (Duck1_1,Duck1_2,Duck1_3,etc) 这样的 plist 中的文件查找中的图像名称创建纹理,它循环遍历它们,然后将它们添加到可变数组中。然后使用可变数组对存储的纹理进行动画处理,并使用 SKAction 进行播放。这对动画效果很好,直到播放 30-40 然后它崩溃并说打开了太多文件并且无法再打开文件。关于如何阻止这种情况发生的任何想法?谢谢

这是我在崩溃时遇到的 Xcode 错误: ImageIO: CGImageReadCreateDataWithMappedFile 'open' failed '/private/var/mobile/Containers/Bundle/Application/782E98C3-0452-43EF-BF4D-401773D5FDCD/WildNoizesLite.app/Duck1_1.png ' 错误 = 24 (打开的文件太多)

Backtrace: * thread #1: tid = 0x301c4, 0x00000001944ab270 libsystem_kernel.dylib __pthread_kill __pthread_kill + 8, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x00000001944ab270 libsystem_kernel.dylib+ 8 frame #1: 0x0000000194549170 libsystem_pthread.dylib pthread_kill + 112 frame #2: 0x0000000194422b18 libsystem_c.dylibabort + 112 frame #3: 0x00000001934b5418 libc++abi.dylib abort_message + 116 frame #4: 0x00000001934d4b8c libc++abi.dylibdefault_terminate_handler() + 304 frame #5: 0x0000000193ce83c0 libobjc.A.dylib _objc_terminate() + 128 frame #6: 0x00000001934d1bb4 libc++abi.dylibstd::__terminate(void (*)()) + 16 帧 #7: 0x00000001934d173c libc++abi.dylib __cxa_rethrow + 144 frame #8: 0x0000000193ce8294 libobjc.A.dylibobjc_exception_rethrow + 44 帧 #9: 0x0000000181ef5384 CoreFoundation CFRunLoopRunSpecific + 572 frame #10: 0x000000018b94b6fc GraphicsServicesGSEventRunModal + 168 帧 #11: UIApplicationMain + 1488 * frame #12: 0x0000000100174fa0 Wild Noizes0x0000000186af2 argc=1, argv=0x000000016fd6f9d8) + 124 at main.m:16 frame #13: 0x0000000194392a08 libdyld.dylib`start + 4

0 投票
2 回答
825 浏览

swift - SKTexture 最近过滤模式不起作用(制作像素艺术)

我使用了一个相对较小的图像(44 像素高)并将其放大以获得像素艺术外观。我试图将过滤模式更改为最近,这样抗锯齿就会消失,但它没有。它看起来边缘模糊。我尝试了相同的背景,得到了相同的结果。

0 投票
1 回答
185 浏览

sprite-kit - 如何确定 SKTexture 使用的是@2x 还是@3x 图像?

有没有办法确定现有的 SKTexture 是使用@2x 还是@3x 图像版本?

我可以查看纹理的大小并进行比较,但我想知道是否有更优雅的方法来做到这一点,最好不使用 UIImage。