我正在尝试以编程方式创建一个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
所以我有一个创建Obstacle的函数,我想制作一个包含两个元素的序列:随机延迟(随机数)和调用Obstacle函数。我首先使用Timer执行此操作,但使用Actions会容易得多。 最佳答案 SKAction.run()然后将您想要的任何函数放入闭包中即可。 关于swift-是否有调用函数的SKAction?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/41834256/
很抱歉让我感到尴尬,但请问我能否获得有关如何执行此操作的完整代码:我希望在我的游戏中每发射一颗子弹后延迟1秒,以防止子弹垃圾邮件。如果可能的话,不要像我在touchesEnded中那样为子弹生成创建单独的函数。所以点击,射击,等待。点击,射击,等待。在等待的过程中,如果屏幕被点击,什么也不会发生。谢谢,对不起,我是初学者guardlettouch=touches.firstelse{return}lettouchLocation=touch.location(in:self)//Setupinitiallocationofbulletandpropertiesletbullet=SKS
我有一个大的Tilesheet(一张图片中有超过1000个图block),如下所示:每个图block都是64x64,我想拆分图片。在这个例子中,我将4个瓷砖放在一个数组中。我怎样才能做到这一点?有不同的尺寸?我需要一些魔法(数学)或更好的想法,我怎样才能在循环中获得正确的裁剪位置。一些快速编码的代码:funccropImage(image:UIImage,tileSize:Int)->[UIImage]?{ifInt(image.size.height)%64!=0&&Int(image.size.width)%64!=0{returnnil}lethCount=Int(image.s
我在这个问题上需要帮助,在我的游戏中,当点击一个节点时会发射一颗子弹,但问题是我可以连续点击并发射大量子弹,我想添加某种延迟射击。这是我开始接触的代码fortouch:AnyObjectintouches{letpointOfTouch=touch.location(in:self)ifplayer1.contains(pointOfTouch){fireBullet1()}ifplayer2.contains(pointOfTouch){fireBullet2()}ifplayer3.contains(pointOfTouch){fireBullet3()}}}}funcfireBu
在我正在测试的应用程序中,我使用渐变图像作为背景(大小为590kb)。我有能力将此图像分解为0.5像素的垂直strip(19kb)并让此图像自身重复(1334次)以创建相同的更大背景图像。我总共有20张不同的背景图片,因此应用程序的存储空间使用量为11.8mbvs380kb。我不喜欢拥有1334个Sprite的想法,但我喜欢使用更少存储空间的想法。那么,有没有办法将1334张图像拼合成一个Sprite?不确定这是否有意义,但任何朝着正确方向的插入都会受到赞赏。 最佳答案 如果你想有一个渐变,你根本不必使用图像。看看这个:letcon
我正在构建一个提供可编辑Canvas的应用程序,类似于photoshop或illustrator(目前使用SpriteKit)。正如您想象的那样,我在显示大量节点(1000多个)时遇到了一些性能问题。目前,我有一个带有SKShapeNodes的SKScene。它们目前没有任何图像,只是填充了一种颜色。它们的形状路径(CGPath)从圆形到贝塞尔曲线路径各不相同。每个形状当前都有一个SKPhysicsBody,其路径与用于检测点击的渲染形状相同。性能问题可以描述为:添加1000个节点(圆圈)时速度较慢,每个节点使用大约0.1mb的内存移动1000个节点(圆圈)时速度较慢从1000个节点(
我有一个简单的矩形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=
在SpriteKit中,我使用SKCameraNode来放大和缩小SKScene。场景中的任何SKLightNodes都不会缩放。它们不是Camera的子对象,因此不应该是不变的。在此找不到任何内容-在SO上搜索“SKLightNodeSKCameraNode”会产生0个结果。使用Xcode8.3.3并从一个基本的Game/Swift项目开始,我将GameScene.swift中的sceneDidLoad()替换为:overridefuncsceneDidLoad(){letcameraNode=SKCameraNode()cameraNode.position=CGPoint(x:0
我正在使用以下代码使Sprite节点在Xcodespritekit中绕圈移动。letcircleDiameter=CGFloat(100)//centerourpathbasedonourspritesinitialpositionletpathCenterPoint=CGPoint(x:object.position.x-circleDiameter,y:object.position.y-circleDiameter/2)//createthepathourspritewilltravelalongletcirclePath=CGPath(ellipseIn:CGRect(orig