草庐IT

Sprite-kit

全部标签

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

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

ios - 实现可点击形状的最佳方法?

我正在构建一个提供可编辑Canvas的应用程序,类似于photoshop或illustrator(目前使用SpriteKit)。正如您想象的那样,我在显示大量节点(1000多个)时遇到了一些性能问题。目前,我有一个带有SKShapeNodes的SKScene。它们目前没有任何图像,只是填充了一种颜色。它们的形状路径(CGPath)从圆形到贝塞尔曲线路径各不相同。每个形状当前都有一个SKPhysicsBody,其路径与用于检测点击的渲染形状相同。性能问题可以描述为:添加1000个节点(圆圈)时速度较慢,每个节点使用大约0.1mb的内存移动1000个节点(圆圈)时速度较慢从1000个节点(

ios - 尝试通过按下按钮将 sprite 的 zRotation 增加 1 度时旋转不正确

我有一个简单的矩形Sprite,每次按下屏幕上的按钮时,我都想将这个Sprite旋转1度。我有一些我希望可以工作的简单代码,但它给出了奇怪的结果。不是将矩形旋转1度,而是每次点击至少将其旋转180-270度。vardegrees=0overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){lettouch=touches.firstlettouchLocation=touch!.location(in:self)letbeam=childNode(withName:"beam")as!SKSpriteNodeifletbody=

ios - SKLightNode 不使用 SKCameraNode 缩放

在SpriteKit中,我使用SKCameraNode来放大和缩小SKScene。场景中的任何SKLightNodes都不会缩放。它们不是Camera的子对象,因此不应该是不变的。在此找不到任何内容-在SO上搜索“SKLightNodeSKCameraNode”会产生0个结果。使用Xcode8.3.3并从一个基本的Game/Swift项目开始,我将GameScene.swift中的sceneDidLoad()替换为:overridefuncsceneDidLoad(){letcameraNode=SKCameraNode()cameraNode.position=CGPoint(x:0

swift - Sprite 节点的起始位置

我正在使用以下代码使Sprite节点在Xcodespritekit中绕圈移动。letcircleDiameter=CGFloat(100)//centerourpathbasedonourspritesinitialpositionletpathCenterPoint=CGPoint(x:object.position.x-circleDiameter,y:object.position.y-circleDiameter/2)//createthepathourspritewilltravelalongletcirclePath=CGPath(ellipseIn:CGRect(orig

ios - 使用 UserDefaults 在 SKScenes 之间传递字符串

在我使用Swift开发的游戏中,我希望玩家能够在类似商店的场景中选择背景,从而更改每个SKScene的背景。我正在尝试使用UserDefaults来完成此操作,但由于某种原因它无法正常工作。下面是Shop场景的重要代码(我去掉了不相关的代码):importSpriteKitclassShopScene:SKScene{varbackNumber=90varbackRemainder=0varbackground=SKSpriteNode()varbackName:String="back1"overridefuncdidMove(toview:SKView){background.te

ios - 如何阻止我的角色在 zRotation 约束下过度旋转?

我正在开发的平台游戏中有一辆载具,我希望它能够旋转,这样它就可以滚上山坡等。我想限制我的车辆在负向和正向旋转30度。问题是,当我启用旋转并从悬崖上滚下或直边掉落时,我的车辆从侧面翻转并以头着地着陆。我一直在寻找一种方法来将zRotation限制在每个方向上的设定度数。我尝试使用本教程中的IK约束部分:https://www.raywenderlich.com/129895/sprite-kit-inverse-kinematics-swift-2在我的更新功能中,但没有效果。然后我发现了这个:https://developer.apple.com/documentation/sprit

ios - 暂停 SpriteKit 游戏 - UIApplicationWillResignActive 与 UIApplicationDidBecomeActive?

我理解这两种方法之间的区别,但我想知道在执行暂停SpriteKit游戏等操作时,使用UIApplicationWillResignActive与UIApplicationDidBecomeActive(或UIApplicationDidEnterBackground)相比是否有缺点。我一直浏览网站上的主题,注意到通常在回答询问如何暂停SpriteKit游戏的问题时,建议使用UIApplicationDidBecomeActive和UIApplicationDidEnterBackground,而不是UIApplicationWillResignActive。由于UIApplicatio

ios - Swift - 将 SKScene 叠加到 UIView 上 - 灰色背景

我是Swift和Xcode的新手,只是在玩弄SpriteKit。我所做的是在main.storyboard中创建了一个UIView。UIView(名为overlayedGameScene)只占据了大约一半的屏幕,所以你应该能够看到主要的UIView(self.view)。importUIKitimportSpriteKitimportGameplayKitclassGameViewController:UIViewController{@IBOutletvaroverlayedGameScene:SKView!overridefuncviewDidLoad(){super.viewDi

swift - 蛇在垂直方 block 中移动

我正在尝试使用SpriteKit制作蛇游戏(就像旧诺基亚手机中的游戏)。问题是,当蛇的方向改变时,蛇在一个静止的垂直block中移动,并没有得到L形(如图所示)。为了进入上下文,我有一个名为SKDSpriteNode的类,它与SKSpriteNode相同,但有一个额外的direction属性;Snake类有direction和length属性。有一个snakeBody属性,类型为[SKDSpriteNode],包含蛇体的节点。蛇的方向在游戏开始时分配给.up,然后由用户的滑动分配。顺便说一句,changeDirection方法在蛇的方向改变时被调用(使用didSet)。这是代码和图片: