jjzjj

ios - 缩放不一致的 SKNode

我已经创建了自己的解决方案,用于在不缩放整个场景的情况下放大或缩小特定的SKNode,它似乎主要按照我期望的方式工作,但我希望得到2个值得注意的异常(exception)在这里输入。首先是代码(这个控制语句在touchesMoved方法中):if(touches.count==2){//thismeanstherearetwofingersonthescreenNSArray*fingers=[touchesallObjects];CGPointfingOneCurr=[fingers[0]locationInNode:self];CGPointfingOnePrev=[fingers

ios - 什么最能代表角色 SKNode 或 SKSpriteNode?

目前,我的类(class)看起来像@interfaceCharacter:SKNode@property(nonatomic,assign)CGFloatwalkingSpeed;@实现角色+(Character*)characterWithLevel:(BaseLevel*)level{return[[selfalloc]initWithLevel:level];}-(id)initWithLevel:(BaseLevel*)level{if(self=[superinit]){_sprite=[SKSpriteNodespriteNodeWithImageNamed:level.h

ios - 跳转到节点层次结构中的特定 SKNode

我注意到SKNode方法children和childNodeWithName:顾名思义只返回查询节点正下方的子节点的结果。即[rootchildren];将返回包含节点@[CUBE1,CUBE2,CUBE3]的NSArray。在下图中,我想从ROOT(SKScene)级别向下到SPHERE2,以便我可以快速访问该节点子节点。我希望[rootchildNodeWithName:@"SPHERE2"];会遍历整个层次结构并返回指向SPHERE2的指针我的问题:是否有什么我遗漏的东西可以让我在指定点跳入节点树(即使用节点名称)我可以使用属性来存储指向树中重要位置的指针,然后使用它们来访问和处

ios - 为什么重复创建和删除SKShapeNode和SKNode会导致内存泄漏?

使用Xcode自带的spritekit模板,我修改场景如下:#import"MyScene.h"@interfaceMyScene()@property(nonatomic,strong)SKNode*floor;@end@implementationMyScene-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){/*Setupyourscenehere*/}returnself;}-(void)update:(CFTimeInterval)currentTime{/*Calledbeforeeachfra

ios - 当 SCNScene overlaySKScene 的 child 时查找触摸的 SKNode

我有一个SCNScene用于我正在构建的3D游戏。我使用SCNScene.overlaySKScene在这个场景上放置了一个HUD。为了在我的3D场景上接收点击,我使用了手势识别器和hitTest,这工作正常。我正在尝试确定我现在点击添加到HUDSKScene的SKSpriteNodes。这不适用于手势识别器。看过WWDC2014Banana示例后,我认为我在使用替代的touchesBegan方法(如下)时没有做任何不同的事情。overridefunctouchesBegan(touches:NSSet,withEventevent:UIEvent){println("touchesB

swift - 转换回 gamescene.swift 导致错误 "' 试图添加一个已经有父节点的 SKNode”

我的应用包含两个场景。Playscene.swift和gamescene.swift。从游戏场景到游戏场景(游戏发生的地方)的转换非常完美。然而,一旦游戏结束,我就会出现一个“重播”按钮,允许用户返回到gamescene.swift。转换回来后它崩溃并出现错误“试图添加一个已经有父节点的SKNode”。是否有正确的方法可以转换回主屏幕或重新启动游戏,这样我就不会收到错误消息?感谢您的帮助!!ifself.nodeAtPoint(touchLocation)==self.replay{letscene=GameScene(size:self.size)letskView=self.vie

ios - SpriteKit : child does not rotate with parent SKNode

目标是使用角速度而不是zRotation围绕一个点旋转物理体。因此,似乎有必要添加第二个物理体(控制旋转的那个),但是改变这个父对象的角速度不会移动子对象。换句话说,父项旋转,但子项保持原位。如何轮换父项和子项?parent=SKNode()sprite=SKSpriteNode(color:SKColor.whiteColor(),size:spriteSize)sprite.position=CGPoint(x:0,y:50)parent.addChild(sprite)parent.physicsBody=SKPhysicsBody(rectangleOfSize:parentS

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