我使用SpriteKit创建了一个简单的2D街机游戏,我正在尝试添加一个计分系统。游戏基本上是一个方形Sprite,它必须跳过各种障碍。所以我想要的是当玩家接触到整个游戏重新开始的对象时。游戏检测到接触(我之前测试过)但是当我移除我所有的child然后运行我的游戏的基本主要功能时,我注意到旧对象不断产生并相互困惑。funcdidBegin(_contact:SKPhysicsContact){if(contact.bodyA.categoryBitMask==PhysicsCategory.Player&&contact.bodyB.categoryBitMask==PhysicsCa
我希望实现的结果:我有一个节点,它几乎是一个带辐条的自行车车轮。当用户用胶带粘住屏幕时,我希望轮子不仅会弹跳,而且会随着每次点击而旋转。我现在拥有的:节点当前会在用户点击屏幕时反弹,就像它应该的那样。但是它不旋转。我仍在学习Swift,因此非常感谢任何帮助或建议。代码:wheelNode=SKSpriteNode(imageNamed:"wheel")wheelNode.zPosition=1wheelNode.position=CGPoint(x:self.frame.midX,y:self.frame.midY)wheelNode.physicsBody=SKPhysicsBody
在我的SKScene中,我正在制作一个简单的太空射击游戏。无论在哪个iPhone上玩游戏,我如何才能确保我的敌人总是出现在屏幕尺寸内?换句话说,我如何计算场景大小的最大和最小X坐标,更重要的是,我如何根据运行游戏的iPhone了解当前场景大小? 最佳答案 不要根据iPhone型号调整场景大小,让Sprite-kit做这种工作:scene.scaleMode=SKSceneScaleMode.ResizeFillThesceneisnotscaledtomatchtheview.Instead,thesceneisautomatica
我知道我可以在GameScene.swift中使用以下内容来引用我在关卡编辑器中创建的Sprite:ball=childNode(withName:"ball")as?SKSpriteNode如果我想从Ball类中引用那个球怎么办?以下是我认为可行的方法。我错了。在关卡编辑器中,我为球指定了自定义类Ball。1.我在GameScene.sks中创建了一个球Sprite并为其分配了Ball的自定义类:这是我自定义的Ball类。(你可以忽略这些内容,因为它不起作用。)classBall:SKSpriteNode{init(){letsize=CGSize(width:35,height:3
我正在尝试这样做一段时间。我有一个名为PlayScene的游戏的主场景。我那里有一个暂停按钮。当玩家点击该按钮时,我想加载另一个名为PauseScene的场景。为了直观地创建该场景,我使用Sprite工具包关卡编辑器。所以我有两个文件PauseScene.swift和PauseScene.sks。但是.sks内容(目前只是背景)并没有取消存档。我真的不知道我在哪里会犯错误。所以这是我通过位于PlayScene的暂停按钮进行的转换fortouch:AnyObjectintouches{letlocation=touch.locationInNode(self)ifself.nodeA
我正在学习Swift以创建适用于iOS的游戏,但我正在努力弄清楚Sprite将如何与背景发生碰撞和交互。基本游戏是一个球,您引导它走下迷宫,但迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以由图block组成,但我还没有决定如何让球与迷宫互动。我可以制作迷宫Sprite节点中的所有图block,然后让SpriteKit解决它,但我认为这不是一个很好的选择。然后是SpriteKit边缘体,如图所示-https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_P
我在场景编辑器中设置我的SKSpriteNode的用户数据:然后我尝试获取它,使用:letsprite:SKSpriteNode=self.childNode(withName:"sprite")as?SKSpriteNodeletnumero:Int=sprite.userdata?.valueForKey("numero")as!Int但我得到了nil值:“fatalerror:在展开可选值时意外发现nil”我还尝试使用以下方法初始化userData:sprite.userData?=NSMutableDictionary()但同样的结果... 最佳答案
在场景的右上角或左上角添加标签的最佳方法是什么?它应该是跨设备的。letheight=self.frame.size.heightletwidth=self.frame.size.widthlabel.fontSize=50label.verticalAlignmentMode=.Toplabel.horizontalAlignmentMode=.Leftlabel.position=CGPoint(x:2,y:height-2)但它不会在角落里。怎么了? 最佳答案 在SpriteKit中,场景坐标的默认原点在屏幕的左下角。因此,如
编辑3:嗯,我已经解决了这个问题。似乎在iOS8中,您现在可以从scene.sks文件加载场景。所以在这种情况下,游戏正在加载一个分辨率为1024x768的.sks文件。这就是图像未正确显示的原因。将ViewController更改为在iOS8之前工作(这里有解释:SwiftandSpritekitwon'trunondevicerunningiOS7.1)似乎可以解决问题。感谢所有试图帮助我的人。:D我正在使用最新的Xcodebeta在SpriteKit和Swift中创建游戏(好吧,我正在移植我已经在Obj-C中制作的游戏)。我有一个问题,那就是SpriteKit似乎没有正确渲染我的
将触摸检测限制在图像Sprite的mask区域的正确方法是什么?下面的代码(理论上)是我希望它如何工作的。它是一个巨大的彩色方block,上面覆盖着宇宙飞船的形状。当用户触摸时,我只希望被遮盖的部分响应触摸。在下面的代码中,事件被忽略(可能是因为cropNode.maskNode是一个属性,而不是一个子节点)。我尝试过其他方法,但都没有将触摸限制在蒙版区域。问题是..这应该如何完成?overridefuncdidMoveToView(view:SKView){letcropNode=SKCropNode();letmostlyHiddenSprite=SKSpriteNode(colo