Tag: 精灵套件

我如何使sprite工具包中的popup菜单快捷?

我正在尝试做一个游戏的popup式菜单,最好的方法是什么? 它看起来像这样:

如何在SpriteKit中支持多种屏幕尺寸?

我想制作支持所有iOS设备的通用游戏,除了使项目如何让我的游戏支持所有屏幕尺寸之外,还有一种方法是通过代码检测屏幕尺寸,并根据尺寸更改graphics和代码,每个设备的graphics分辨率应该是多less?

如何在每10秒内增加一个敌人,让这个敌人跟踪你的位置并跟随它

即时通讯正在制作一个应用程序,其中你的玩家是一个小圆球,被手指拖到屏幕上。 然后每隔10秒就会有一个敌人的球join,自动追踪你的球并跟随它,直到它进入。 这是迄今为止我所拥有的代码。 你可以在屏幕上拖动你的球,尽pipe它的文件在资产中的每一帧都会产生,并且只是移动到你的球产生的位置。 有什么办法可以解决这个问题,任何帮助表示赞赏。 我将在稍后添加的球之间的接触。 import SpriteKit import GameplayKit class GameScene: SKScene { var me = SKSpriteNode() let enemy = SKSpriteNode (imageNamed: "ellipse 1") override func didMove(to view: SKView) { me = self.childNode(withName: "me") as! SKSpriteNode let border = SKPhysicsBody (edgeLoopFrom: self.frame) border.friction = 0 self.physicsBody = border } override func touchesBegan(_ touches: Set<UITouch>, […]

如何animation一个Sprite-Kit游戏的背景,就像Instagram的iOS应用程序的login屏幕?

我在Sprite-Kit中创build了一个游戏,并且想要以与Instagramlogin屏幕上类似的方式为背景添加animation。 基本上,我只想知道如何在我的游戏中拥有一个背景,就像Instagram应用程序在其login屏幕上一样,即粉红色的屏幕逐渐变为紫色,然后从右至右变为红色,带有微妙的stream动效果剩下。 我知道如何使渐变变得有生气,但是我所说的这个细微的效果,让人对气体或者溪stream的stream动有了一定的了解(我爱上了这种效果)似乎并没有发生。

SpriteKit纹理不可见

我正在开发一个游戏,其中有一些animation的angular色,当用户使用游戏控制进行移动,战斗时等等。 有一个正常的状态,即当用户没有触摸任何控件时,玩家的angular色纹理被分配到正常状态或静止状态纹理。 如果用户非常快速地执行这些控制,则当他回到正常状态时,玩家的angular色纹理消失。 如果使用了任何控件,那么animation是可见的。 任何人都可以帮我解决这个问题吗? 任何帮助将不胜感激。 我已经展示了我在下面使用的一些基本的编程结构。 //————————————————————————- *// The 'Normal or Resting' state texture.* SKAction *normalStateAction = [SKAction setTexture:normalStateTexture]; *// To Play any Character Animation like Walk, Fight, Jump, etc.* [playerCharacter.sprite runAction:[SKAction sequence:@[charAnimAction,normalStateAction]]]; *// In the 'TouchesEnded' method for any Game Control.* -(void)TouchesEnded { // Remove previous actions. [playerCharacter.sprite removeAllActions]; // Run Normal State […]

Swift多节点访问

假设我们在1000次左右添加相同的节点,如下面的代码所示。 有没有什么办法可以访问每一个平台? 例如,如果PlatformCategory和PlayerCategory之间有碰撞,碰撞的PlatformCategory应该将其颜色更改为绿色并运行SKAction 。 编辑:感谢旋风,我可以让与玩家碰撞的平台变成绿色,而其他所有的变成红色。 现在我需要正确设置碰撞,这意味着我只想让Player在Platform上碰撞Platform 。 例如,玩家从1.平台跳到2.平台。 在跳跃的时候,不要碰到第二个平台,只有在通过之后。 class GameScene: SKScene, SKPhysicsContactDelegate { let PlayerCategory : UInt32 = 0x1 << 1 let PlatformCategory : UInt32 = 0x1 << 2 var Platform: SKSpriteNode! var Player: SKSpriteNode! override func didMoveToView(view: SKView) { /* Setup your scene here */ self.physicsWorld.contactDelegate = self self.physicsBody?.velocity = CGVectorMake(0, 0) ….. […]

你如何在Swift中获得一个精灵/纹理的原始文件名?

我创build一个精灵并为其分配一个图像文件。 var logoImage = SKSpriteNode(imageNamed: "image1.png") 那么在某些情况下,我改变了图像。 logoImage.texture = SKTexture(imageNamed: "image2.png") 在应用程序的另一部分,我想检查当前正在显示哪个图像。 但是我不知道如何获取文件名。 使用: print(logoImage.texture?.description) 返回: "<SKTexture> 'image2.png' (500 x 500)" 其中显然包含的文件名,但我怎么得到它自己的文件名?

SpriteKit:有没有办法根据SKLabelNode的基线来居中

标签有四种不同的verticalAlignmentMode : .Baseline , .Bottom , .Center和.Top 。 我希望标签能够根据其基准位于其位置上。 .Center对我来说不起作用,因为帧的底部不是文本的底线,而是最底部的字母(比如'y')。 我也尝试使用.Baseline并从y位置减去框架高度的一半,但这也不起作用,并导致与.Center相同的问题。 我试图集中的标签中的文字是“Play!”。 将模式设置为“.Center”会使文本稍微高于我想要的值,这很明显。 将文本更改为“Pla!” 修复了这个问题,因为'y'被删除,没有任何字符挂在基线之下(尽pipe我明显不能这样做)。 我想build议一个解决这个问题的方法 – 也许有一些方法来获得基线的位置? 谢谢!

SKPhysicsBody malloc错误

我创build了一个叫SKSpriteNode Obstacle的子类,并在init实现物理主体: -(id)initWithHeight:(NSInteger)height flipped:(BOOL)flipped { if (self = [super initWithImageNamed: @"obstacle.png"]) { [self setName: @"obstacle"]; [self setSize: CGSizeMake(OBSTACLE_WIDTH, height)]; [self setPosition: CGPointZero]; // rotate if needed if (flipped) { [self runAction: [SKAction rotateByAngle: 3.14 duration: 0.0f]]; } // physics SKPhysicsBody* pb = [SKPhysicsBody bodyWithRectangleOfSize: self.size]; pb.dynamic = NO; pb.affectedByGravity = NO; [pb setCategoryBitMask: obstacleCategory]; [pb […]

如何在游戏中存储用户数据? (swift,spritekit)

比方说,我有一个游戏,一开始用户可以select一些东西,比如名字,性别等等,这会影响游戏的很多方面,比如用来渲染用户的精灵,文本显示。 所以每次我离开游戏的一个区域并进入一个新的区域时,我应该根据用户数据计算出 – 使用什么样的精灵和准备什么样的文字。 我应该为用户的数据创build一个字典的单独的类,然后每当我进入一个新的区域时调用它? 谢谢你。