我有一个标签,显示自玩家第一次触摸屏幕以来我的游戏已经过去的时间。它显示秒和毫秒。我使用将它定位在框架的中间CGPointMake(CGRectGetMidX(self.frame)问题是,并非所有数字都具有相同的宽度(例如,1小于3)。这导致我的标签在毫秒更新时从左到右快速跳转一两个像素。因为标签大小每次都明显增加和减少,所以我的标签的MidX坐标发生变化并导致我的标签移动。我希望它始终保持在同一位置。有谁知道阻止它移动的解决方案吗?编辑:标签代码-(SKLabelNode*)timeLabel{timeLabel=[[SKLabelNodealloc]initWithFontNam
我正在尝试从我的自定义类SKNode对象中获取值。问题是当我触摸物体时,不管我触摸的是什么物体,都会给我相同的值。(蓝色按钮)而且我无法获取我之前设置的buttonID、buttonType。一切正常,除非我需要获取我触摸或拖过的对象的buttonType、buttonID。我不确定我哪里出错了,任何帮助或插入正确的方向都会很棒。谢谢。这是我的自定义类.h文件。#import@interfaceButtonNode:SKNode{SKNode*buttonCustom;}@propertyintbuttonType,buttonColumn,buttonID,xPos,yPos;@pr
我项目中的许多资源都位于文件夹引用而不是组中,即蓝色文件夹,而不是黄色文件夹。这是出于多种原因-我考虑了两种解决方案,文件夹引用是更好的选择(我做的事情像imagePaths=[[NSBundlemainBundle]pathsForResourcesOfType:@"png"inDirectory:directory];)根据thisguide我只是重命名包含文件夹,但是如果我将任何包含Assets的文件夹重命名为folder.atlas,这将被视为路径名的一部分,并且找不到任何内容。唯一的方法是使用TexturePacker之类的工具手动生成图集吗?我的代码在很大程度上依赖于路径名
我制作了这个我可以抓取并四处移动的Sprite。我的问题是我希望能够“抛出”Sprite。意思是,当我释放Sprite时,我希望它继续沿着我移动它的方向前进。就像扔球一样。我该怎么办?@implementationNPMyScene{SKSpriteNode*sprite;}-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){self.backgroundColor=[SKColorcolorWithRed:0.15green:0.15blue:0.3alpha:1.0];sprite.physicsBody
我有一个具有不同场景的sprite套件游戏:主菜单(“MainMenuScene”)和游戏场景(“MyScene”)。用户在玩游戏的时候,我有一个没完没了的播放背景音乐。但是当玩家想要停止游戏并返回主菜单时,背景音乐一直在播放。我应该怎么做才能让它停止?我试过[selfremoveAllActions]但它没有用。我的场景:@implementationMyScene{SKAction*_backgroundMusic;}-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){self.backgroundCol
我正在开发一个简单的游戏,您从三个“特殊技能”开始。当您单击按钮时,您还剩下两个,依此类推,直到没有。然而,当我进入一个新的阶段时,我又回到了3。这是错误的,我想保留与阶段1相同数量的“技能”。我知道这是因为下面的代码而发生的。我正在initWithSize中初始化我的“权力”,每次我的舞台加载时都会调用它。-(id)initWithSize:(CGSize)sizelevel:(int)level{if(self=[superinitWithSize:size]){power1=33;power2=3;power3=3;NSDictionary*config=[NSDictionar
我正在为我的游戏使用SpriteKit,并且想要一种逐像素物理。在iOS7中,(我认为)唯一的方法是使用bodyWithPolygonFromPath:方法。虽然我的图像有点复杂,所以我想创建一个更基本的图像形状,然后从该alpha图像创建路径。是否可以将我的图像转换为CGPath以用于物理体?我知道在iOS8中有API可以执行此操作,但我希望我的游戏也能在iOS7上运行。 最佳答案 您可以像有人提到的那样使用PhysicsEditor(PE),或者您可以使用SKPhysicsBodyPathGenerator.您需要做的就是拖放S
随着iOS8的发布苹果也发布了新的swift。购买他们还发布了Sprite套件的一些更新。其中之一是每像素物理体。我试图找到如何在xcodebeta中实现这个每像素物理体,并且在搜索SKphysicBody类后我无法找到任何东西。只是想知道这是否会在稍后发布,或者我是否遗漏了什么。此外,如果此功能仅在swift中可用,还是在swift和objectiveC中都可用。 最佳答案 对于每像素物理体迅捷init(texture纹理:SKTexture!,sizesize:CGSize)->SKPhysicsBodyobjective-C+
我是IOS开发新手,目前在didBeginContact方法中遇到一些Sprite工具包碰撞问题。如果其中一个碰撞物理体被移除,我如何中断或停止didBeginContact运行。例如:1颗子弹与2个重叠的敌人相撞。因为子弹击中敌人并被摧毁,对第二个敌人运行的碰撞检查抛出异常,因为子弹不再存在。我曾尝试检查nil和NSNULL值,但没有成功。我收到的错误代码是“Thread1:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOIP,subcode=0x0)”并且在尝试检查类别位掩码时发生(因为鱼雷不再存在)。代码:varbodyA:SKPhysicsBody=
我不完全理解spritekit动画中的最佳选择;1)苹果在“冒险”的例子中使用了这种方法,他们将动画作为图片存储在内存中nsarray:staticNSArray*sSharedTouchAnimationFrames=nil;-(NSArray*)touchAnimationFrames{returnsSharedTouchAnimationFrames;}-(void)runAnimation{if(self.isAnimated){[selfresolveRequestedAnimation];}}-(void)resolveRequestedAnimation{/*Determ