jjzjj

ios - SKNode.nodesAtPoint 的顺序有保证吗?

SKNode有一个方法nodesAtPoint,它返回与给定点相交的子节点数组。此类数组中元素的顺序是否确定(例如按绘制顺序)?我在文档中找不到答案,所以答案可能是“否”,但我想验证一下。 最佳答案 不,SpriteKit在遍历节点树时不考虑z位置(绝对是出于性能原因)。通过按顺序向场景添加几个节点然后更改z位置,您可以轻松地看到这一点。顺序将始终基于节点在节点树中的位置,而不是z位置。 关于ios-SKNode.nodesAtPoint的顺序有保证吗?,我们在StackOverflow

ios - SKNode addChild 上的奇怪随机崩溃

我有一个简单的类函数,用于在许多不同的场合添加SKEmitterNode。发生异常时我无法重现步骤。它很少发生而且很随机。我可以调用此方法500次而不会出错,或者在某些情况下,调用1次或2次后可能会发生错误,等等。问题/异常行是:root?.addChild(sparks)下面是方法和堆栈跟踪。我不知道如何调试它。我尝试过很多不同的东西但没有成功。有什么想法吗?classfuncsetSimpleSparksEffect(root:SKNode?,color:UIColor,position:CGPoint){ifCGPointEqualToPoint(position,CGPoint

swift - 如何在 Swift Playgrounds 中使用带有纹理的 SKNode 设置 SKScene?

我尝试将模板代码从SpriteKit项目复制到playground中,但当我呈现场景时,我得到的只是一个灰色屏幕。我需要创建一个SKScene吗?如果需要,我该如何将它分配给我正在使用的场景类。以下是我创建和呈现场景的代码:@objcfuncgoToGameScene(){print("GameViewLoaded")sceneView=SKView(frame:CGRect(x:0,y:0,width:666,height:500))sceneView.backgroundColor=UIColor.blackPlaygroundPage.current.liveView=scene

swift - 通过 SKNode 子类更新 SKLabel 文本

我的目标:将Achievements类的amount变量加一,然后更新文本,使其显示在名为“AmountLabel”的SKLabelNode上所以我有一个SKNode的子类来保护我的SKSpriteNode,它显示成就的标志和成就标题的SKLabelNodes以及解锁成就所需的数量如下所示:classAchievements:SKNode{varachievementLabel=SKLabelNode()varachievementTitleLabel=SKLabelNode()varachievementNode=SKSpriteNode()varamount=0varneededA

swift - 我的自定义 SKNode 未调用 onTouchesBegan()

我正在尝试为我的游戏设计我自己的DPad,但由于某些原因我的onTouchesBegan()没有被调用。我探索了一下,我认为这是因为我的self.frame.size出于某种原因等于(0,0)即使在我添加了我的子节点(上、下、左、右节点)。我猜因为大小是0,所以没有什么可以检测到触摸。我在这里做的事情有什么明显的错误吗?我唯一能想到的可能是因为按钮是SKLabelNodes?但我打印了它们的尺寸,它们都>0。protocolDPadDelegate{funcupTapped()funcdownTapped()funcleftTapped()funcrightTapped()}openc

swift - 如何在 spritekit 中获取 PhysicsBody SKNode 的方向

我有一个应用了脉冲的SKNode。有没有办法知道每次的方向?它碰撞了很多物体,我想实时知道他的方向是哪个。 最佳答案 试试这个:yourPhysicsBody.velocity这应该返回物理体在任何给定时间的速度CGVector。 关于swift-如何在spritekit中获取PhysicsBodySKNode的方向,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/31928971

ios - SK节点!不可转换为 "SKNode"

我遇到了这个问题,但无法解决,我不太理解解包变量的文档varladybug:SKNode=SKNode.childNodeWithName("ladybug")错误:(字符串!)->SKNode!不可转换为“SKNode”谢谢 最佳答案 childNodeWithName不是类方法。您在实例上调用它,而不是SKNode类本身。如果您在SKScene子类中编写此代码,您要调用此方法的实例可能是self。 关于ios-SK节点!不可转换为"SKNode",我们在StackOverflow上找

ios - 从 SKNode 访问 SKView 方法

在SpriteKit开发中,应该如何访问SKView?例如;假设我创建了一个名为Player的自定义SKNode类以在我的整个游戏中使用:classPlayer:SKNode{/*...*/}在这个类中,如果我想从SKShapeNode生成一个SKSpriteNode(为了提高性能)我需要使用SKView.texture()方法。但是我无法访问我的Player所在的SKView,除非我将View从实例化它的人那里传递给Player。有什么方法可以获取附加了SKNode的当前View,这样我就不必在我的应用程序周围传递对View的引用了吗?这只是框架的异常吗?处理此问题的首选方法是什么?

swift - Xcode 6.3 和 Swift 1.2 中的新警告 : Cast from '[SKNode]' to unrelated type 'String' always fails

更新到xCode6.3/Swift1.2后,我遇到了一个我无法解决的错误:“从‘[SKNode]’转换为不相关的类型‘String’总是失败”。下面是我的GameScene代码,它从解析p-list开始。importSpriteKitclassGameScene:SKScene,SKPhysicsContactDelegate,NSXMLParserDelegate{varcurrentTMXFile:String?overridefuncdidMoveToView(view:SKView){/*Parsep-list*/letpath=NSBundle.mainBundle().pa

ios - SKNode 在 SKConstraint 范围内跟随另一个 SKNode

我正在尝试使用SpriteKit模拟一只眼睛。当用户的手指在屏幕上移动时,眼睛的瞳孔会跟踪用户的手指,但必须保持在眼睛的范围内。我曾尝试使用SKConstraint解决此问题,但未成功。编辑我的想法是对瞳孔应用SKConstraints以限制其边界到眼睛。任何触摸(即touchesMoved()等)都将以SKAction.moveTo()的形式应用于瞳孔,并且SpriteKit会处理将瞳孔保持在眼睛范围内。lettouchPoint=CGPoint()SKAction.moveTo(touchPoint,duration:2)视频代码可用:https://gist.github.com