草庐IT

ios - 在 Sprite Kit 中创建按钮的正确方法?

我正在制作游戏,我想要一个按钮。我如何处理点击它?我为UI使用单独的类,它是SKSpriteNode保存所有按钮和界面元素,我不希望Scene在touchesbegind方法中为我处理这些按钮按下。据我所知,我们可以检查在touchesbegin中被触摸的节点,因此要在内部实现带有touchup的常规按钮,我需要在touchesBegan和touchesEnded中编写代码,这看起来有点矫枉过正。或者我应该使用普通的UIButton吗?但我知道你不能动态添加它们,只能在didMoveToView方法中添加,这看起来很糟糕。 最佳答案

ios - 在 Sprite Kit 中加载 .tmx(平铺 map )?

在iOS7的SpriteKit中是否有一种(最好是简单的)方法来加载.tmx文件?如果没有,是否有其他选择? 最佳答案 你应该使用专为SpriteKit设计的JSTileMap将JSTileMap文件添加到您的项目将libz.dylib添加到项目的链接框架和库部分导入JSTileMap.h并加载map:JSTileMap*tiledMap=[JSTileMapmapNamed:@"mapFileName.tmx"];if(tiledMap)[mySKNodeaddChild:tiledMap];这是来源:https://github

iOS 7 Sprite Kit 释放内存

我正在构建一个针对新的iOS7和SpriteKit的iOS游戏,使用发射器节点和物理来增强游戏玩法。在开发应用程序时,我遇到了一个严重的问题:你创建了你的场景、节点、效果,但是当你完成并需要返回主屏幕时,你如何释放这些资源分配的所有内存?理想情况下,ARC应该释放所有内容,应用程序应该恢复到创建场景之前的内存消耗水平,但事实并非如此。我添加了以下代码,作为View的dealloc方法,它绘制场景并负责在关闭(移除)时移除所有内容:-(void)dealloc{if(scene!=nil){[scenesetPaused:YES];[sceneremoveAllActions];[sce

ios - 如何通过 SKEffectNode 在 Sprite 周围创建光晕

我有一个SKSpriteNode,我想在它的边缘周围发出蓝色光以突出显示。我猜我需要让我的Sprite成为SKEffectNode的child,然后创建/应用某种过滤器。更新:我已经用选择的答案方法对此进行了相当多的调查,并发现SKEffectNode对性能有相当大的影响,即使你将它设置为shouldRasterize并定义了“无过滤器”。我的结论是,如果您的游戏同时需要10个以上的移动对象,即使光栅化,它们也不会涉及SKEffectNode。我的解决方案可能会涉及预渲染的发光图像/动画,因为SKEffectNode不会根据我的要求削减它。如果有人知道我遗漏了什么,我很乐意听到你知道的

ios - Sprite Kit - SKShapeNode 路径不绘制四边形曲线

我一直在研究Apple的新SpriteKit,现在已经使用了一段时间。但是,我在尝试为SKShapeNode绘制曲线路径时遇到了问题。它似乎只是画了一条直线。这是我遇到的问题的一个非常简单的示例-尝试为SKShapeNode绘制CGPath:CGMutablePathRefpath=CGPathCreateMutable();CGPathMoveToPoint(path,NULL,0,0);CGPathAddQuadCurveToPoint(path,NULL,50,100,100,0);CGPathAddLineToPoint(path,NULL,50,-100);CGPathClo

ios - 如何在 Sprite-kit 中画一条线

如何在Sprite-kit中画一条线?例如,如果我想在cocos2d中画一条线,我可以很容易地使用ccDrawLine();sprite-kit中是否有等效项? 最佳答案 使用SKShapeNode你可以画线或任何形状。SKShapeNode*yourline=[SKShapeNodenode];CGMutablePathRefpathToDraw=CGPathCreateMutable();CGPathMoveToPoint(pathToDraw,NULL,100.0,100.0);CGPathAddLineToPoint(pat

swift - 如何在 Swift 3.0 中拖放 Sprite ?

我想要做的就是能够在屏幕上拖放Sprite。我尝试了以下代码:overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){}overridefunctouchesMoved(touches:Set,withEventevent:UIEvent?){fortouchin(touches){letlocation=touch.locationInNode(self)ifball.containsPoint(location){ball.position=location}}}这段代码确实有效,但是,当我非常快地拖动球时,我猜它

sprite-kit - SKShapeNode(circleOfRadius) 在 OSX 的 Playground 中产生 "unrecognized selector sent to class"

以下playground导致时间轴错误“无法识别的选择器发送到类...”importSpriteKitletnode=SKShapeNode(circleOfRadius:10)Screenshot当平台是iOS时似乎工作正常。运行10.9.3 最佳答案 这是因为您在比您尝试使用的API更旧的OSX版本上运行它。您使用的代码需要OSX10.10或iOS8及更高版本。OSX10.10APIDifferences确认所有SKShapeNodes自定义初始化器都刚刚添加到10.10中。以前,我们对SKShapeNode所能做的就是初始化一

swift - 我如何确定一个正方形是否可以在不与其他 Sprite 接触的情况下到达位置?

从上图中,给定初始位置b0(x,y)、结束位置b1(x,y)以及位置a(x,y)和c(x,y)。如何预先确定正方形B0是否会从b0(x,y)移动到b1(x,y)而不接触矩形A和C?我相信会需要这个角度。 最佳答案 一些观察...如果盒子B的初始位置在结束位置的右边(空隙中),那么只有当θ为逆时针角度时,盒子才能成功移动到结束位置而不会与其他盒子发生碰撞(见图以下)。对于此测试,使用框B的右上角和C的左下角。同理,如果方blockB的初始位置在结束位置的左边,那么只要θ为逆时针角度(见下图),它就可以成功移动到结束位置而不会与其他方b

sprite-kit - Swift 和 Spritekit 无法在运行 iOS 7.1 的设备上运行

当我尝试使用Xcode6在我的设备上运行我的Swift项目时,我收到了一个非常奇怪的警告。设备运行的是iOS7.1,我的mac运行的是Mavericks。我用Swift和SpriteKit编写了一个小游戏,它可以在模拟器中运行,但是当我尝试在我的设备上运行它时,我收到警告,并且我的设备只显示黑色背景。尝试运行新的SpriteKit项目时,我得到了相同的结果。但是,如果我使用Swift运行一个新的单页应用程序,它会正常运行。这是我收到的警告:有什么建议吗? 最佳答案 我也遇到了这个崩溃,与7.1.1SDKSpriteKit游戏模板相比