你好。我有一个多重碰撞问题。有一颗子弹击中了敌人(红色矩形)。然后,它++分数。有一个螺旋(红色圆圈)应该会在敌人(红色矩形)接触到它时触发场景结束。在这种情况下,当敌人击中螺旋时,它起作用,场景结束,我们进入菜单屏幕。但是,当子弹击中敌人时,同样的事情发生了,我不知道为什么。现在,这是我的代码:structPhysicsCategory{staticletNone:UInt32=0staticletAll:UInt32=UInt32.maxstaticletenemyOne:UInt32=0b1staticletenemyTwo:UInt32=0b1staticletbullet:U
我正在尝试使用缩放以外的方法来选择Sprite节点。我最喜欢的一种方法是用白色着色,它可以明显地突出显示节点。但是,我似乎无法多次复制colorizewithwhite行为。为什么我不能多次使用白色应用colorizeWithColor?除了使用的颜色不同,这两个方法调用是相同的。如果我使用红色、灰色等,每次触摸时节点都会闪烁。但如果我使用白色,它只会这样做一次,然后再也不会响应触摸。[selfrunAction:[SKActioncolorizeWithColor:[SKColorlightGrayColor]colorBlendFactor:0.8duration:0.6]comp
当我将一个使用SpriteKit的iPhone应用程序移植到iPad时,我已经能够使用iPhone5与iPad屏幕的高度比来缩放所有屏幕元素和字体大小。一切看起来都是成比例的,除了物理原因,因为有更多的面积。所以问题是,如何使用该高度比缩放物理效果和屏幕?也许改变所有节点的密度或质量?我将如何做到这一点,在数学上使用比率使其完美? 最佳答案 您可以配置附加到SKScene的SKPhysicsWorld对象。它改变了:在模拟中将加速度应用于基于体积的物体的重力属性。speed属性决定模拟运行的速率。您可以将这些属性设置为适合您在iPa
如何在我的spriteKit应用程序中获取少量液体?我想要那种液体放在一个容器里,它会被密封在里面,但我希望它能够四处移动。有没有更好的方法来实现这个?也许没有SpriteKit的选项?编辑:我能够使用本教程模拟水:http://www.raywenderlich.com/85515/liquidfun-tutorial-1我发现的这个示例项目:https://github.com/safx/liquidfun-ios-sample但它需要我运行2个物理世界(1个用于box2D,1个用于spriteKit)。有谁知道如何将我的粒子从box2D导入到spriteKit中?我想这应该是可行
我想利用SpriteKit中的粒子效果(也许还有其他一些东西),但我的应用程序主要Root于UIKit。SpriteKit框架是否允许您创建一个具有透明背景的场景,我可以将其放置在我的UIKitView层次结构之上? 最佳答案 简短的回答是否定的。您可以将SKView(UIView的子类)添加到您的View层次结构中,并将其场景设置为您自己的SKScene。但是SKView有一个backgroundcolor属性不能清晰(默认为灰色)。这在OSXmavericks中似乎是可能的,因此希望苹果也能在iOS中添加这种可能性。
我创建了一个SKView,它展示了一个像这样的SKScene子类:SKView*skv=[[SKViewalloc]initWithFrame:self.view.bounds];[self.viewaddSubview:skv];self.skScene=[[TestScenealloc]initWithSize:v.bounds.size];[skvpresentScene:_skScene];然后为了查看坐标系原点,我在场景中添加了一个10x10的彩色小方block。SKSpriteNode*ori=[SKSpriteNodespriteNodeWithColor:[UIColo
//更新添加了更新的代码,可以按我的预期工作。请参阅下面更新代码中的didSimulatePhysics方法。在我的例子中,我只关心在x轴上向左或向右移动一个字符,其中x轴上的0是绝对的左,x轴上的右是一个可配置的值。Apple冒险游戏也帮了大忙。//以下为原帖我正在使用AppleSpriteKit,我正在努力实现我希望它表现的相机。我在代码中所做的是加载一个sprite角色、两个按钮和一个在开始时位于View右侧的红色框。我想要做的是用按钮移动角色,一旦玩家到达屏幕的中间或末端,相机就会重新调整以发现View中看不到的东西。因此,一旦玩家到达右侧,向右移动最终应该会显示最初在View
(这是针对XCode6和iOS8beta4的)喜欢新的SceneKit编辑器。我成功地将场景从.sks文件加载到自定义SKScene类中。但是,其中的对象被实例化为默认类(SKNode、SKSpriteNode等),我不确定如何将它们绑定(bind)为实例化为自定义子类。目前,我通过创建自定义类并将Sprite节点作为属性链接来解决这个问题,而且效果很好 最佳答案 目前,您应该在添加到SpriteKit游戏模板的方法中按名称进行操作。他们在WWDC2014的SpriteKit最佳实践视频中介绍了这个主题。很容易错过,因为视频中有很多
我创建了一个粒子,当我测试它在Xcode的属性窗口中移动时,它看起来像这样:我已将此粒子添加到场景中,制作了一个圆圈并使用此命令强制粒子运行该圆圈:NSString*myParticlePath=[[NSBundlemainBundle]pathForResource:@"particle"ofType:@"sks"];SKEmitterNode*myParticle=[NSKeyedUnarchiverunarchiveObjectWithFile:myParticlePath];[selfaddChild:myParticle];CGPathRefcircle=CGPathCrea
我有一个游戏,我想根据用户触摸屏幕的左侧或右侧来向左或向右移动SKNode。如何在用户触摸屏幕时对节点应用持续移动? 最佳答案 您实际上有三种选择来保持速度。一种是在每次更新时简单地将速度重置回您想要的数量。在这种情况下,我选择了200,200。这将使您的运动完全静止。-(void)update:(NSTimeInterval)currentTime{node.physicsBody.velocity=CGVectorMake(200,200);}第二种选择是保持速度,但使用速率因子为运动失真留出空间。下面的示例会将速度保持为200