草庐IT

ios - Swift 和 Sprite Kit - 如何测量 Sprite 移动的总距离?

在我的游戏中,玩家Sprite连续向上移动,因为我在更新函数中设置了Sprite的速度:overridefuncupdate(_currentTime:TimeInterval){...player.physicsBody!.velocity.dy=max(player.physicsBody!.velocity.dy,650*gameGain)}现在我想测量Sprite走过的总距离。有什么方法/方法可以这样做,还是我必须创建一个变量来手动计算距离,例如vardistance:Floatoverridefuncupdate(_currentTime:TimeInterval){play

ios - 在一段时间内手动移动节点

我目前声明了以下函数,这些函数将节点移动到场景更新函数中调用的目标位置(在这种情况下,我不能使用SKAction.moveTo)funcmoveTowardsPosition(targetPosition:CGPoint,withTimeIntervaltimeInterval:NSTimeInterval){letcurrentPosition=self.positionvardeltaX=targetPosition.x-currentPosition.xvardeltaY=targetPosition.y-currentPosition.yvarmaximumDistance=3

ios - 使用 SpriteKit 抛出一个对象

我现在有以下代码。即使代码构建成功,我似乎也无法让它工作。我试图做到这一点,当你轻弹物体时,它会以你开始和结束触摸的速度移动。importSpriteKitclassGameScene:SKScene{varsprite:SKSpriteNode!vartouchPoint:CGPoint=CGPoint()vartouching:Bool=falseoverridefuncdidMoveToView(view:SKView){self.physicsBody=SKPhysicsBody(edgeLoopFromRect:self.frame)sprite=SKSpriteNode(c

ios - Swift SpriteKit - 逐渐增加旋转

我正在试验@nickfalk在Howtorotatespriteinspritekitwithswift上的回答关于如何在spritekit中旋转sprite。我如何调整它以逐渐将旋转速度提高到最大值,然后当点击屏幕时,它会逐渐减慢并在x时间内向相反方向移动?谢谢!托比。 最佳答案 好的,以下(概念证明有点困惑)以恒定速度旋转Sprite。点击+按住它会逐渐减慢旋转速度直至停止。结束触摸会立即使旋转恢复到全速。我设置了一个具有以下属性的场景:varsprite:SKSpriteNode?和varshouldDecelerate=fa

swift/ Sprite 套件 : Play music through specific scenes

我有一个游戏,其中有几个教程场景。我可以使用AVFoundation和AVAudioPlayer()为每个场景添加音乐。我需要做的是能够在特定场景中启动音乐,并让它仅在相关场景的背景中继续播放。例如:在教程菜单中启动tutorialMusic继续tutorialMusic教程A继续教程B中的tutorialMusic在教程菜单中继续tutorialMusic停止tutorialMusic并在主菜单中播放mainMenuMusic我尝试过的我尝试将AVAudioPlayer()放在ViewController中,但我发现它会传播到每个场景,无论它是什么。我也找不到ViewControll

ios - 识别同一位置的所有节点

我有一个iOS应用程序可以在屏幕上绘制Sprite网格。然后我有另一个代表颜色的Sprite,我可以将其拖放到网格上。我的问题是如何确定它被拖到网格上的哪个Sprite?最终我想允许用户将一个颜色Sprite拖到另一个Sprite上,这样我就可以根据用户的选择更改颜色。下面的代码只返回该位置的第二个Sprite(最上面的那个),而我需要在那个位置识别两个Sprite。overridefunctouchesEnded(touches:Set,withEventevent:UIEvent?){print("tocuhesended")fortouchintouches{letlocatio

Swift SpriteKit 使用 struct 而不是 class 来渲染 Sprite

我最近一直在更新我的游戏以使用更多的值类型。在某些情况下,我对weak和unowned仍然不是100%有信心,所以我采用结构方式来避免强引用循环。根据apples较新的主题演讲,值类型似乎是大多数情况下的方法。我从未见过在spriteKit游戏中使用结构来渲染Sprite的示例,所以我想知道有什么缺点。我知道它们是复制的而不是引用的,但对于我的使用来说它似乎有效。所以基本上我在做这个的时候有什么需要注意的地方structFlag{letpost:SKSpriteNodeletflag:SKSpriteNodeinit(postImage:String,flagImage:String)

ios - SpriteKit 纹理 "scaling"各不相同

完全相同的纹理,不同的结果这里是SKSpriteNode和SKShapeNode从纹理图集获得相同的纹理。SKSpriteNode在右边,它做正确的事。SKShapeNode在左边,做错事了。拜托,我做错了什么?这是代码...overridefuncdidMove(toview:SKView){letmyTextureAtlas=SKTextureAtlas(named:"demoArt")letarrayOfFileNames=myTextureAtlas.textureNamesletmyTexture=myTextureAtlas.textureNamed(arrayOfFile

swift - 以编程方式使用 Assets 创建 SKSpriteNode

我正在尝试以编程方式创建一个SKSpriteNode并在我的Assets.xcassets文件夹中为其提供纹理。我认为这将是一个基本程序,但我似乎遇到了很多麻烦。作为引用,这是我的Assets目录,其中包含我试图设置为SKSpriteNode的地面Assets:这是制作Sprite节点的代码:sprite.texture=SKTexture(image:UIImage(named:spriteName)!)sprite.anchorPoint=CGPoint(x:0,y:1)sprite.position=CGPoint(x:0,y:0)referenceNode.addChild(s

swift - 将多个 Sprite 图像转换为一个

在我正在测试的应用程序中,我使用渐变图像作为背景(大小为590kb)。我有能力将此图像分解为0.5像素的垂直strip(19kb)并让此图像自身重复(1334次)以创建相同的更大背景图像。我总共有20张不同的背景图片,因此应用程序的存储空间使用量为11.8mbvs380kb。我不喜欢拥有1334个Sprite的想法,但我喜欢使用更少存储空间的想法。那么,有没有办法将1334张图像拼合成一个Sprite?不确定这是否有意义,但任何朝着正确方向的插入都会受到赞赏。 最佳答案 如果你想有一个渐变,你根本不必使用图像。看看这个:letcon