我正在学习Swift以创建适用于iOS的游戏,但我正在努力弄清楚Sprite将如何与背景发生碰撞和交互。基本游戏是一个球,您引导它走下迷宫,但迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以由图block组成,但我还没有决定如何让球与迷宫互动。我可以制作迷宫Sprite节点中的所有图block,然后让SpriteKit解决它,但我认为这不是一个很好的选择。然后是SpriteKit边缘体,如图所示-https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_P
一旦Sprite从父级移除,我会尝试调用一个函数,以便Sprite可以复制并再次进入场景。每次我在当前代码中执行此操作时,它都会在原始Sprite出现之前进行复制从父项中删除导致重复的Sprite。这是我目前的代码:importSpriteKitletplankName="woodPlank"classPlankScene:SKScene{varplankWood:SKSpriteNode?varplankArray:[SKSpriteNode]=[]overridefuncdidMove(toview:SKView){plankWood=childNode(withName:plan
您好,我正在尝试在屏幕底部生成子弹向上移动,但我当前的代码是在屏幕顶部生成子弹。我试过使高度为负,但什么也没发生。这是我正在使用的代码,谢谢。letrandomBulletPosition=GKRandomDistribution(lowestValue:-300,highestValue:300)letposition=CGFloat(randomBulletPosition.nextInt())bullet.position=CGPoint(x:position,y:self.frame.size.height+bullet.size.height) 最
我的应用程序正在运行Spritekit,并且专为横向设计,我终究无法弄清楚为什么当我在GameCenter中显示用于验证玩家的模态视图时,键盘不见了。这是我目前的代码。classGameViewController:UIViewController,ADBannerViewDelegate,GKGameCenterControllerDelegate{vargameCenterEnabled:Bool=falsevarinitialized:Bool=falseletleaderBoardIdentifier:String="squareBeatLeaderboard"@IBOutle
编辑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
在我的游戏中,所有场景都是横向的。我将iAd横幅实现为在屏幕底部处于横向模式。但是,当我单击它并加载时,它会将其方向更改为纵向。当我退出广告时,游戏恢复正常。是否可以在加载时将广告保持在横向模式?下面是我用于创建iAd的代码。importUIKitimportSpriteKitimportiAdclassGameViewController:UIViewController,ADBannerViewDelegate{varSH=UIScreen.mainScreen().bounds.heightlettransition=SKTransition.fadeWithDuration(1
我必须构建一个可以使用各种手势为3D对象着色的Swift应用程序。我有一个作为SceneKit对象导入的Collada文件。我找不到用水龙头给它上色的方法。我尝试从WWDC示例转换Obj-C,但它对我不起作用。我尝试在3D对象上应用SpriteKit作为纹理,但结果是这样:当用户点击屏幕时,应用程序应获取3D对象的纹理坐标,然后在该点添加一个SpriteKit节点。之前:之后:我不知道为什么纹理会以这种方式爆炸。谢谢! 最佳答案 SpriteKit场景坐标系统并不像图像那样映射到纹理坐标。图像中的像素坐标具有向下增加的y轴;在Spr
我正在尝试使用SKAction.rotateToAngle旋转Sprite。例如:rotate=SKAction.rotateToAngle(desiredAngle,duration:1.0)sprite.runAction(rotate)但它并没有像预期的那样工作。Sprite以不同的方式旋转。通过尝试和尝试,我发现这是SpriteKit采用的旋转系统:现在我不知道他们为什么决定采用这个坐标系,但它非常违反直觉。我怎样才能在这个系统和普通系统之间转换?顺便问一下,我怎样才能顺时针旋转Sprite? 最佳答案 来自文档:Anang
我希望能够根据分数打开和关闭我的SKEmitterNode(雨粒子)。但是我的更新功能不断被调用,即我最终在屏幕上看到数百万个粒子,下面是我当前的代码……我如何构建我的代码,以便在达到分数时只调用一次雨粒子?classGameScene:SKScene,SKPhysicsContactDelegate{funcsetUpRain(){ifletrainParticle=SKEmitterNode(fileNamed:"Rain"){rainParticle.position=CGPointMake(frame.size.width,frame.size.height)rainParti