我正在为我的游戏使用SpriteKit,并且想要一种逐像素物理。在iOS7中,(我认为)唯一的方法是使用bodyWithPolygonFromPath:方法。虽然我的图像有点复杂,所以我想创建一个更基本的图像形状,然后从该alpha图像创建路径。是否可以将我的图像转换为CGPath以用于物理体?我知道在iOS8中有API可以执行此操作,但我希望我的游戏也能在iOS7上运行。 最佳答案 您可以像有人提到的那样使用PhysicsEditor(PE),或者您可以使用SKPhysicsBodyPathGenerator.您需要做的就是拖放S
我有许多构成游戏背景的独立节点(方block)。它们每个都是32x32p,并且彼此相邻放置以形成地板/屋顶/障碍物。我从JSON文件加载map,并在场景初始化时根据JSON文件的内容将节点定位在背景层/节点上。这工作正常,但是,我在移动背景层/物理引擎正在做它的事情时遇到了一些错误。一些节点彼此移动1点/像素,在它们之间创建一个间隙。由于背景颜色不同,这看起来很糟糕。问题主要出现在map更远的地方(不是马上),与此同时,我要么向玩家施加脉冲,要么物理引擎使玩家弹跳(或类似)。这是一张说明我的问题的图片:(Clicktoopeninseparatetab)如您所见,在nodes中的o和d
我需要有关如何为小型2d事物制作动画的指导,例如,一个只保持闪烁的角色。SpriteKit和cocos2d是否“太多”而无法实现这类事情?我不打算制作游戏,我只是想将标准的iOS控件与执行上述简单动画的艺术品混合在一起,但也许我需要在不久的将来制作更精细的动画(例如,角色奔跑).我应该为此使用CoreAnimation框架吗?还是另一种更好的选择?我会支持iOS7.0+提前致谢 最佳答案 CoreAnimation在这里最好,因为您特别希望使用户界面元素闪烁(而不是使用棋盘和Sprite构建游戏)。使用CoreAnimation设置
我昨天将我的iPhone5更新到iOS8,然后我开始玩我开发的一款游戏,该游戏已经在应用商店上架了大约两个月。我的游戏现在仅通过升级到iOS8就严重滞后。我在iOS7中从未遇到过任何滞后问题,而设备与以60FPS运行的iPhone4一样老。这非常令人担忧,因为我不希望我的客户在更新到iOS8后遇到同样的问题。知道为什么会发生这种情况吗?编辑:我刚刚做了一些测试,我的FPS仍然是60,但我的节点仍然移动缓慢。在我的程序中,我将physicsWorld.speed设置为0.05。当我将它设置得更高时,节点不再滞后。似乎iOS8physicsWorld.speed的工作方式与iOS7不同。我
我使用SKShapeNode绘制一些从A点到B点的线。线很宽,我需要圆角以使其更漂亮。经过一些搜索,有一个CGPathCreateWithRoundedRect,但我不确定它是否可以画对角线。我尝试在行首和行尾添加一个圆,但结果并不完美,特别是如果我在圆和行上都使用glowWidth。这是我画线的方式:SKShapeNode*yourline=[SKShapeNodenode];CGMutablePathRefpathToDraw=CGPathCreateMutable();CGPathMoveToPoint(pathToDraw,NULL,from.x,from.y);CGPathA
我有一个Cat节点和一个Bird节点。bird节点一起嵌套在称为birdBlock的容器节点中。一切都包含在WorldNode中。如果我将一只鸟添加到WorldNode,Cat可以与其进行适当的交互,但是当鸟在birdBlock中时,Cat只是将它们推开,它们就会飞起来。我正在使用以下工具寻找我的鸟:[worldNodeenumerateChildNodesWithName:kBirdNameusingBlock:^(SKNode*node,BOOL*stop){SKSpriteNode*newBird=(SKSpriteNode*)node;if(CGRectIntersectsRe
我想不出如何在短短几秒钟内加载我的纹理。一个怪物需要20多秒。最初我在单独的纹理图集中制作动画。它们的名称类似于sprite_002@2x~iphone.png。当它们分开时,我使用了类似于Apple文档中的代码:SKTextureAtlas*atlas=[SKTextureAtlasatlasNamed:@"monster"];SKTexture*f1=[atlastextureNamed:@"monster-walk1.png"];SKTexture*f2=[atlastextureNamed:@"monster-walk2.png"];SKTexture*f3=[atlastex
我开始使用Xcode6+进行SpriteKit编程,当从代码中添加节点或任何对象时,在设备(4'、3.5'、4.7'...)之间切换时,它们的布局出现问题。我该如何解决这个问题并使any游戏在所有设备上看起来都通用? 最佳答案 这里没有自动解决方案。Spritekit都是手动布局。如果您考虑一下,这是有道理的,因为让横向游戏自动在纵向模式下工作是没有意义的。您将需要手动建立所有坐标并自行缩放。 关于ios-SpriteKit布局问题,我们在StackOverflow上找到一个类似的问题:
我有这个code模拟碰撞,但我的物体不会旋转。所以碰撞似乎效果很好,但没有旋转。 最佳答案 这很奇怪。我会说这是因为您已将摩擦力设置为0.0,没有任何东西可以使它旋转。同时检查物理体上的“allowsRotation”属性以确保它设置为TRUE。 关于ios-碰撞不起作用时的SpriteKit旋转,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/29108071/
我正在使用SpriteKit的内置物理引擎为iOS构建游戏。基本上它涉及一个弹跳球,它通过我手动设置它的初始速度移动,并通过重置与地板接触事件中的速度弹跳。问题是,这个环境的实际数学计算并不正确。使用“SUVAT”方程很容易确定球在以一定速度抛出后到达地面时的x位移应该有多远,但是(重力设置为-9.81),它几乎没有移动几个像素。我将问题简化为尝试将球向上(沿y方向)射出一定距离,同样的事情发生了,它向上移动了几个点,然后就落到了地板上,至少20次它应该移动多远。这就是我设置物理环境的方式:self.physicsWorld.contactDelegate=self;self.phys