草庐IT

Sprite-kit

全部标签

ios - 施加的力使节点移动

我正在创建一个自上而下的台球游戏。整个View就是表格,然后我有多个球节点。当我对球施加力时,它们会持续移动很长时间,我希望力能更快地消失。因为在我很难弄清楚要调整哪个属性之前,我并没有过多地研究物理。我对球的恢复(0.8)相当高,因为我希望它们从边缘反弹。边由此节点定义:SKPhysicsBody(edgeLoopFrom:CGRect(x:-self.size.width/2.0,y:-self.size.height/2.0,width:self.size.width,height:self.size.height))我看到SKShapeNode类上有一个friction属性。我

swift - 类扩展 SKScene 但无法访问其属性

我有一个扩展SKScene的菜单类,但我无法访问View,这是SKScene的一个属性。相反,我收到以下错误:“实例成员‘view’不能用于菜​​单类型。”我需要做什么特别的事情才能访问它吗?看起来它应该已经可以调用它了。这是该类的简化版本:classMenu:SKScene{varblueButton:Button!vartouchNode:SKSpriteNode!varnewScene:SKScene?overridefuncdidMove(toview:SKView){blueButton=self.childNode(withName:"Start")as!Button}..

swift - 我的节点没有发生碰撞,我的代码中是否遗漏了什么?

我遵循了许多关于碰撞的不同教程并创建了我自己的游戏,我想在其中声明硬币和玩家之间的碰撞。但是,在实现碰撞代码后,我的两个节点没有对碰撞做出响应...有人可以帮我吗?importSpriteKitimportGameplayKit//CollisioncategoriesenumColliderType:UInt32{caseplayerCase=1casecoinCase=2caseborderCase=3}classGameScene:SKScene,SKPhysicsContactDelegate{letplayer=SKSpriteNode(imageNamed:"block")

swift - 在 spritekit 中随机化不同的敌人向玩家移动

我想知道是否有人可以回答我的问题。我在Sprite-kit中使用纹理图集创建了3种不同的敌人动画,我想知道是否有一种方法可以在游戏开始后立即随机选择一个敌人向玩家移动。TextureAtlas=SKTextureAtlas(named:"zombies.atlas")foriin1...TextureAtlas.textureNames.count{letZ="z\(i).png"zombieArray.append(SKTexture(imageNamed:Z))}TextureAtlas=SKTextureAtlas(named:"baldzomb.atlas")foriin1..

swift - 如何一次生成多个相同的 SpriteNode?

所以我有3个不同的障碍物,它们随机产生并在3秒后被移除,但是如果例如Obstacle1已经产生并且随机数告诉程序产生另一个Obstacle1,我得到一个错误"Terminatingappduetouncaughtexception'NSInvalidArgumentException',reason:'AttempedtoaddaSKNodewhichalreadyhasaparent"这里是Obstacle1的代码,其他两个几乎一样只是名字不同:函数createObst1(){self.addChild(obst1)path=UIBezierPath(arcCenter:CGPoin

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 - 是否有调用函数的 SKAction?

所以我有一个创建Obstacle的函数,我想制作一个包含两个元素的序列:随机延迟(随机数)和调用Obstacle函数。我首先使用Timer执行此操作,但使用Actions会容易得多。 最佳答案 SKAction.run()然后将您想要的任何函数放入闭包中即可。 关于swift-是否有调用函数的SKAction?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/41834256/

Swift 定时器检查 TouchesEnded

很抱歉让我感到尴尬,但请问我能否获得有关如何执行此操作的完整代码:我希望在我的游戏中每发射一颗子弹后延迟1秒,以防止子弹垃圾邮件。如果可能的话,不要像我在touchesEnded中那样为子弹生成创建单独的函数。所以点击,射击,等待。点击,射击,等待。在等待的过程中,如果屏幕被点击,什么也不会发生。谢谢,对不起,我是初学者guardlettouch=touches.firstelse{return}lettouchLocation=touch.location(in:self)//Setupinitiallocationofbulletandpropertiesletbullet=SKS

swift - 将图片拆分为图 block 并放入数组

我有一个大的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

ios - 如何在我的游戏中发射子弹时点击时添加延迟

我在这个问题上需要帮助,在我的游戏中,当点击一个节点时会发射一颗子弹,但问题是我可以连续点击并发射大量子弹,我想添加某种延迟射击。这是我开始接触的代码fortouch:AnyObjectintouches{letpointOfTouch=touch.location(in:self)ifplayer1.contains(pointOfTouch){fireBullet1()}ifplayer2.contains(pointOfTouch){fireBullet2()}ifplayer3.contains(pointOfTouch){fireBullet3()}}}}funcfireBu