草庐IT

Sprite-kit

全部标签

swift - 点击时如何让 Sprite 改变方向?

第一次触摸时,我的播放器开始沿y轴向上移动,我将其设置如下:overridefunctouchesBegan(...){ifisMovingup==true{letup=SKAction.moveByX(0,y:900,duration:9)player.runAction(up)}else{letdown=SKAction.moveByX(0,y:-900,duration:9)player.runAction(down)}isMovingup=!isMovingup}但是,当第二次点击该节点时,我希望它沿y轴向下移动,但到目前为止,它什么都不做。如有必要,将发布更多代码。

swift - 淡入淡出 SKLabelNodes 的最佳方式

我正在开发一款小型SpriteKit游戏。我想在主屏幕上有一个“提示”部分,每次显示不同的提示。我有一个可行的方法,它是我自己编写的,但它很困惑,我确信有更好的方法可以完成。我希望有人可以向我展示我可能错过(或绕过很长一段路)的方法。我目前是这样做的:funccreateTipsLabels(){//createSKLabelNodes//addpropertiestoLabels//tip1Label...etc//tip2Label...etc//tip3Label...etc//nowanimate(orpulse)intipslabel,oneatatime...lettSeq

ios - SpriteKit - 使某些 SpriteNodes 在不禁用其物理体的情况下不会发生碰撞

我在屏幕上有4个SpriteNode,我不希望它们相互弹开,而是相互流过,同时保持与某些SpriteNode和屏幕框架的碰撞。我已经为所有这些声明了类别:letBCategory:UInt32=0x1还添加了位掩码:b.physicsBody!.categoryBitMask=BCategoryb2.physicsBody!.categoryBitMask=B2Categoryb3.physicsBody!.categoryBitMask=B3Categoryb4.physicsBody!.categoryBitMask=B4Categoryp.physicsBody!.categor

ios - 如何获取 Sprite Kit 中 UI 触摸的位置?

我想获取触摸在UI中的位置,并使用该位置来确定Sprite运行的方向。例如,如果触摸在屏幕左侧,则用户向左跑,如果触摸在屏幕右侧,则用户向右跑。 最佳答案 尝试这样的事情overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){iflettouch=touches.first{letposition=touch.locationInView(view)print(position)}} 关于ios-如何获取SpriteKi

swift - 场景之间的 SpriteKit 过渡无需重置游戏

如何在不重置游戏的情况下在场景之间转换,因为didMoveToView()被调用并重新初始化了我的所有实例变量。例如我有一个游戏场景和一个商店场景。当我从我的商店场景过渡到我的游戏时,游戏会重置。有什么方法可以防止这种情况发生,或者如何在场景之间转换时保持游戏的相同状态? 最佳答案 您有很多选项可以在游戏场景中保持持久状态。我列出了我使用过的两种方法。选项A:保持对场景的引用当场景换成新场景时,场景通常会从内存中完全删除。如果您在其他地方持有场景对象的引用,并提供该引用,则不会丢失任何数据。为了随着时间的推移保持引用(并在需要时再次

swift - 在后台线程中运行 SpriteKit 进程以提高 CPU 使用率

我正在使用Swift和SpriteKit构建我的第一款游戏,但我在CPU使用和电池生命周期方面遇到了很多问题。我想知道在后台线程中运行某些任务(例如实例化坏人)是否是常见的做法;如果是这样,我将如何实现呢? 最佳答案 如果这是您的第一款游戏,除非您真的知道自己在做什么,否则您可能不想为多线程而疯狂。请注意,操作SKNode必须在运行SKView(Private)_update:的同一线程上完成。这是运行runActionblock的同一个线程。如果你不这样做,你就会崩溃。在我正在开发的SpriteKit游戏中,我是​​多线程的,没有

ios - Swift:更改 ViewControllers 时:前一个不会关闭

说到UIKit和ViewControllers,我是个菜鸟。我正在尝试从SplashScreenViewController切换到GameViewController,这是一个SKView。GameViewController加载正常,因为我可以听到游戏音乐开始播放,但SplashScreenController从未从屏幕上消失。所以基本上我有SplashScreenController留在屏幕上,我可以听到GameViewController在后台启动。我做错了什么?这是SplashScreenViewController的代码:classSplashScreenViewContro

swift - Xcode SpriteKit SKAction 不改变 SKSpriteNode 的属性?

如果我创建一个SKSpriteNode,并在该节点上运行一个SKAction,Action会在模拟器上运行,但节点的属性没有改变。例如。在以下示例中,在模拟器中,节点从(50,50)开始并在1秒内移动到(0,0)。但是,末尾的print语句打印的是(50,50)而不是新位置(0,0)lettest=SKSpriteNode()test.position=CGPoint(x:50.0,y:50.0)test.size=CGSize(width:20.0,height:20.0)test.color=UIColor.blackaddChild(test)test.run(SKAction.

ios - SKAction.fadeOut(withDuration : 2. 0) 是从场景中移除节点还是仅将其移除 "hides"?

所以我正在制作游戏并淡出一个节点,但我不知道它是从场景中移除还是只是隐藏了。我想在完全相同的位置添加另一个节点,但我不想让节点相互重叠。letfadeOutAction=SKAction.fadeOut(withDuration:2.0)nodeToFadeOut.run(fadeOutAction)这很完美,但我不知道节点是否已从场景中移除。 最佳答案 这里有一些你可能会觉得有用的东西:)funcfadeAndRemove(node:SKNode){letfadeOutAction=SKAction.fadeOut(withDur

swift - SpriteKit 中 "eat"的最佳方法

我所说的“吃”是指:当SpriteA(马里奥)与SpriteB(一枚硬币)发生碰撞时,会检测到碰撞并将硬币从场景中移除;然而,马里奥的运动并没有因为与硬币的碰撞而改变。目前我正在使用SKPhysicsContactDelegate来记录马里奥和硬币碰撞的时间,但这似乎需要将硬币确认为一个物理实体-因此这意味着马里奥的运动会被它停止.硬币不应该有物理体,而是我应该用不同的方法看它们是否接触? 最佳答案 根据Apple...varcategoryBitMask:UInt32Amaskthatdefineswhichcategoriest