草庐IT

Sprite-kit

全部标签

ios - 如何在应用程序激活时保持 SpriteKit 场景暂停?

有什么方法可以防止SpriteKit在进入前景/变得活跃时自动取消暂停场景?我设置了paused=true并希望它保持如此,即使应用程序在发送到后台后再次激活也是如此。我应该补充一点,我正在迅速执行此操作,但我没想到在这方面的行为会有所不同。 最佳答案 不确定它在objective-c中是否相同,但很快我不得不“覆盖”SKView在幕后调用的回调函数,funcCBApplicationDidBecomeActive(){}此函数导致暂停被重置。(注意不应应用覆盖关键字)在某些情况下,您只想保留暂停状态,创建一个新变量并覆盖isPau

ios - 在spritekit中模拟水/在水上制作 Sprite "float"

我正在努力为我的游戏加水。除了不同的背景颜色外,没有太多其他内容。但是,我希望player-sprite漂浮在它上面(或中间)。如果玩家只是从下面走进水里,我希望他能浮到水面上。如果他摔倒了,我希望他慢慢改变方向,然后重新浮起来。当他在水中时,我试着让重力为负,但这给我带来了一些不太想要的效果。例如,当他(玩家)浮出水面时,正常重力会将他推回下方,水会将他推上去,等等。最终,玩家将在水中“弹跳”,从一端被推到另一端。当他浮出水面时,我希望他能平静地留在水面上。我怎样才能做到这一点?这是我的更新循环中的代码:SKNode*backgroundNodeAtPoint=[_bgLayerno

ios - SKScene iPad 高度宽度反转

我正在尝试在仅支持横向模式的iPad应用程序中用图block填充我的SKScene。在场景中,我检测到h&w是这样的:inth=[UIScreenmainScreen].bounds.size.height;intw=[UIScreenmainScreen].bounds.size.width;不幸的是,发回的尺寸与它们需要的尺寸相反。在SO中有很多主题在ViewController或View的内容中讨论这个问题,解决方案似乎是在viewWillAppear中检测屏幕大小,而不是在viewDidLoad中。然而,这似乎不是SKScenes的有效解决方案。有什么建议吗?

iOS7 Sprite Kit 如何禁用对 Sprite 的触摸以使其成为 "tap through"?

我知道对于传统的UIViews,我可以将“启用用户交互”标志设置为NO,View将不再响应触摸,让它们下面的View接收触摸。有没有什么方法可以在SpriteKit中实现相同的“点按”功能?到目前为止,我只看到人们使用“Touchesbegin”,了解要点并在该点向场景询问节点。这种方法的问题是-如果我想在sprite上添加叠加层(如怪物生命值等),它们也会响应触摸。到目前为止,我试图通过为不同的节点创建自定义类来避免这个问题,然后使用一个非常大的if语句来检查每个节点的类。有没有更好的方法来实现spritekit的“点按”功能? 最佳答案

ios - Xcode 8 在打开项目后立即崩溃(似乎与场景编辑器相关)

所以Xcode8一直有很多错误,并且在使用SpriteKit场景编辑器和瓷砖贴图时似乎经常崩溃......当我在场景编辑器中打开场景并使用瓦片贴图时发生错误。现在我什至不能打开我的项目超过3秒Xcode就会崩溃...有点不知所措......我已经尝试卸载并重新安装Xcode...但没有任何效果。这是崩溃报告的pastebin。任何帮助将不胜感激。http://pastebin.com/kDMjPYec 最佳答案 清除Xcode的派生数据文件夹对我有用。您可以在Xcode->Preferences->Locations标签中找到派生数

ios - Sprite Kit 低性能,一个位置有多个节点

我设置了一个有200个Sprite节点的场景,并将它们随机放置在屏幕上,如下所示:for(inti=0;i只要节点彼此保持距离,我就能获得稳定的60fps。当我施加力使节点开始向场景中心移动并相互重叠时,性能急剧下降到2-3fps。我想这与碰撞检测有关,而不是渲染(如果我用更大的半径初始化物理体,一开始性能就已经很低了)。我已将类别、接触和碰撞掩码设置为0,但这没有帮助。 最佳答案 最好的办法可能是预渲染这个场景,而不是强制iPhone通过200次碰撞检测,这无疑会造成压力。 关于ios

ios - EXC_BAD_ACCESS SK物理世界

我真的很困惑为什么我在[worldaddJoint:pinJoin]得到了一个EXC_BAD_ACCESS(code=1,address=0x1c);。联合测试.m#import"JointTest.h"@implementationJointTest-(SKNode*)initWithWorld:(SKPhysicsWorld*)pWorld{if(self=[superinit]){world=pWorld;[selfattachBodies];}returnself;}-(void)attachBodies{SKSpriteNode*spriteA=[[SKSpriteNodea

ios - 如何使用 SpriteKit 使 Sprite 跳到特定高度?

我正在尝试使用applyImpulse使Sprite跳到特定高度。在下面的示例代码中,动态黑色圆圈跳到与静态红色圆圈相同的高度,但它只适用于杂乱无章。如果我的物理学是正确的,将弹丸发射到高度Y所需的初始垂直动量由质量*平方根(2*重力*Y)给出。然而,这个公式导致黑色圆圈移动得很少。通过反复试验,我发现我可以通过将脉冲向量的垂直分量乘以12.3来使红色圆圈或多或少准确地跳跃,如下面的代码所示。这看起来完全是武断的,快把我逼疯了。我显然做错了什么。执行此操作的正确方法是什么?这是我认为相关的代码:letdy=mass*sqrt(2*-self.physicsWorld.gravity.d

ios - SpriteKit 生成随机 curl 线

我正在做一个项目,我需要完成的是生成随机curl线。此时我已经有了一条随机生成的线,但它不是curl的。我每0.5秒在不同的x位置生成点,并将这些点与贝塞尔曲线连接起来。一切都完美无缺,只是它不是curl的。下图显示了1)我现在如何拥有它以及2)我想如何制作它。我该怎么做?我正在使用SpriteKit-ObjectiveC 最佳答案 基本上,您需要制作和随机化ABézier(参数)曲线的条件是controlpoints.在你阅读了那个很好的答案并熟悉术语后,你可以试试这个例子(我假设你的场景和View大小设置正确):GameScen

ios - 是否可以使用 SpriteKit 生成/绘制纹理?

无法用谷歌搜索任何内容。实际上关于这个新框架的信息很少。我唯一能找到的就是将CoreImage滤镜应用于纹理。但我想在图像上方绘制简单的矩形我需要编写自己的CI过滤器..有人知道这个话题吗? 最佳答案 如果您只需要一个矩形,请使用@Kex的解决方案。通常,您可以从任何UIImage或CGImage创建纹理。[SKTexturetextureWithImageNamed:@"Spaceship.png"]实际上只是方便了[SKTexturetextureWithImage:[UIImageimageNamed:@"Spaceship.