草庐IT

Sprite-Kit

全部标签

swift - SKSpriteNode 图像不显示

呈现View时,我希望在我的images.xcassets中显示名为“Player”(设置)的图像。目前场景只是加载蓝色。不知道为什么,因为即使添加颜色来更改图像颜色也没有任何作用。importSpriteKitclassCharacterScene:SKScene{varCircle=SKSpriteNode(imageNamed:"Player")overridefuncdidMoveToView(view:SKView){backgroundColor=SKColor.blackColor()Circle.size=CGSize(width:40,height:40)Circle

swift - SKEmitterNode iOS 8 vs iOS 9 如何获得相同的结果?

我有一款类似于水果忍者的游戏,使用Swift->SpriteKit。在iOS8上一切正常,但在iOS9上SKEmitterNode有一点奇怪的行为。这是我对两者的Blade效应所得到的:funcemitterNodeWithColor(color:UIColor)->SKEmitterNode{letemitterNode:SKEmitterNode=SKEmitterNode()emitterNode.particleTexture=SKTexture(imageNamed:"spark.png")emitterNode.particleBirthRate=3000emitterNo

ios - 游戏在转到 gameOver Viewcontroller 后重新启动

我的spritekit游戏有问题,它在我使用后立即重新启动一个模型segue到我的gameoverviewcontroller。每次重新启动游戏后,fps也会除以2。所以我实际上需要一种在使用segue后删除游戏的方法。我试过self.dismissViewControllerAnimated(true,completion:nil)但我真的不知道我应该放在哪里。我的Storyboard中有3个ViewController,第一个使用带有模态转场的按钮到第二个我玩游戏场景的按钮。overridefuncviewWillLayoutSubviews(){super.viewWillLay

ios - 在 Swift 中使用更新函数的更清洁(更好)替代方法

简而言之:有没有比将所有函数都放在更新函数中更能减少“延迟”和内存滥用的长时间运行大型函数的更好方法?完整问题我目前正处于使用iOSSwift和SpriteKit开发我的第一个游戏应用程序的最后阶段。我遇到的更大问题之一是滞后/延迟。TimeProfilerInstrument指出我的overridefuncupdate使用了大量内存和时间。我的更新功能包括以下内容:overridefuncupdate(currentTime:CFTimeInterval){ifhasStarted{//CharacterupdateCharacterPosition()updateJumpMotio

swift - 在 sprite kit 中创建高效的平铺背景

我在我的SpriteKit项目中创建的是由大约160个Sprite节点组成的大型二维平铺背景。但对我来说,这似乎非常低效。将这些节点置于单个父节点下是否会使它们更有效率?我假设不会,在那种情况下,他们是否有一种在运行时将纹理本身组合到单个节点中的方法?我会简单地使用图像编辑器来平铺这些图像,但由于我项目中的其他因素,所述背景的大小会因设备而异。 最佳答案 你可以做什么,在你的加载阶段,创建160个Sprite节点,使你的背景在1个父节点下,然后调用lettexture=scene.view.textureFromNode(paren

swift - 如何在 Swift 2.1 中使用滑动/点击(动态)为 3D 对象着色

我必须构建一个可以使用各种手势为3D对象着色的Swift应用程序。我有一个作为SceneKit对象导入的Collada文件。我找不到用水龙头给它上色的方法。我尝试从WWDC示例转换Obj-C,但它对我不起作用。我尝试在3D对象上应用SpriteKit作为纹理,但结果是这样:当用户点击屏幕时,应用程序应获取3D对象的纹理坐标,然后在该点添加一个SpriteKit节点。之前:之后:我不知道为什么纹理会以这种方式爆炸。谢谢! 最佳答案 SpriteKit场景坐标系统并不像图像那样映射到纹理坐标。图像中的像素坐标具有向下增加的y轴;在Spr

swift - 我无法理解 SpriteKit 的旋转系统

我正在尝试使用SKAction.rotateToAngle旋转Sprite。例如:rotate=SKAction.rotateToAngle(desiredAngle,duration:1.0)sprite.runAction(rotate)但它并没有像预期的那样工作。Sprite以不同的方式旋转。通过尝试和尝试,我发现这是SpriteKit采用的旋转系统:现在我不知道他们为什么决定采用这个坐标系,但它非常违反直觉。我怎样才能在这个系统和普通系统之间转换?顺便问一下,我怎样才能顺时针旋转Sprite? 最佳答案 来自文档:Anang

swift - 如何检测用户何时在特定节点上向特定方向滑动?

我的屏幕顶部有6个不同的彩色圆圈落下。对于每个节点,您应该朝不同的方向滑动以得分(红色圆圈;向上滑动,蓝色圆圈;向下滑动等),但是如果用户向与分配给该特定节点的方向不同的方向滑动,它结束了游戏。我对滑动手势非常不熟悉,所以我没有代码,但非常感谢帮助。我如何生成我的节点:funcarray(){letcolorCount=5letindex=Int(arc4random_uniform(UInt32(colorCount)))letcolors=SKSpriteNode(imageNamed:"Color\(index+1)")colors.size=CGSizeMake(130,130

快速 Sprite 碰撞。穿过墙壁的物体

我正在制作一个简单的游戏(使用Swift和SpriteKit),我有一个可以四处拖动的圆圈。但圆圈不允许穿墙。我的碰撞BitMask完美运行,但是当我拖动得足够快时,圆圈最终会穿过墙壁。PlayerSprite的初始化是这样的:funcinitPlayerSprite(){letplayerTexture=SKTexture(imageNamed:"player.png")letoriginX=CGRectGetMidX(self.frame)letoriginY=CGRectGetMidY(self.frame)player=SKSpriteNode(texture:playerTe

swift - 从场景中移除后如何停止 SKSpriteNode 的音频(Swift)?

这是我的代码:overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/letbackgroundImage=SKSpriteNode(imageNamed:"Background.jpeg")backgroundImage.size=self.frame.sizebackgroundImage.position=CGPoint(x:self.frame.width/2,y:self.frame.height/2)backgroundImage.zPosition=1self.addChild(backgroundImag