草庐IT

Sprite-Kit

全部标签

swift - 场景大小内的节点位置

在我的SKScene中,我正在制作一个简单的太空射击游戏。无论在哪个iPhone上玩游戏,我如何才能确保我的敌人总是出现在屏幕尺寸内?换句话说,我如何计算场景大小的最大和最小X坐标,更重要的是,我如何根据运行游戏的iPhone了解当前场景大小? 最佳答案 不要根据iPhone型号调整场景大小,让Sprite-kit做这种工作:scene.scaleMode=SKSceneScaleMode.ResizeFillThesceneisnotscaledtomatchtheview.Instead,thesceneisautomatica

swift - 多孔边界

我刚刚为我的游戏设置了一个边界,它似乎工作正常,直到它真的被强制,就像我让我的角色朝它跑了几秒钟,然后我的角色就​​会直接穿过。对此有何解释以及如何解决?编辑:这是我的边界代码funccreateSceneContents(){self.backgroundColor=.blackself.physicsBody=SKPhysicsBody(edgeLoopFrom:self.frame)}createSceneContents()ship.physicsBody=SKPhysicsBody(rectangleOf:ship.size)ship.physicsBody?.affecte

ios - 截图在模拟器中有效,但在真实设备上失败

我有以下代码截取游戏屏幕截图,然后在点击“分享”按钮时分享它。它在模拟器上运行良好并返回正确的图像。但是,在我的真实设备上,它返回一个白色图像。每次。代码如下:overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){letTouch:UITouch!=touches.firstletTouchLocation=Touch.location(in:self)ifletbody=self.physicsWorld.body(at:TouchLocation){ifbody.node!.name=="shareButton"{let

ios - SpriteKit - 在 Gamescene.sks 中创建 Sprite 并在另一个类中引用

我知道我可以在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

ios - SKTileMapNode:创建无限大小的瓦片 map

在AppleDocuments上它声称你可以制作一个无限大小的SKTileMapGeneratingproceduralgame-worldmapsresemblingnaturalterrain.Youcancreategameworldofinfinitesizebyusingproceduralnoiseasitsunderlyingrepresentation,andmanagestorageandmemoryefficientlybycreatingnoisemaps(andtheirvisualrepresentations)onlyfortheareaaroundapla

ios - 使用 SpriteKit 为 iPhone X 调整屏幕大小

因此,StackOverflow上有数十个问题涉及如何在iPhoneX上正确拟合SpriteKit场景。但是,我找不到任何存在相同差距的问题。我是否可以只为iPhoneX调整屏幕大小?或者我是否必须创建另一个场景,只是为了让iPhoneX适应屏幕?这是我使用.aspectFit得到的结果:我想将该场景延伸到缺口下方和屏幕角曲线所在的上方。我看到很多非常适合的游戏,但还没有找到合适的解决方案。注意:我无法使用aspectFill,因为游戏的某些部分超出了视野。任何链接或答案将不胜感激!编辑resizeFill太大,一切都变大了我已经尝试了所有4个调整屏幕大小的选项,但都没有奏效。有人有建

ios - 如何使 applyImpulse 在所有屏幕上都相等

正如您在使用SpriteKit时可能知道的那样,applyImpulse并非在所有屏幕上都能正常工作。在iPhoneSE上,我的球移动得非常快,但在iPadPro2ndgen上,球移动得非常慢。有没有一种方法可以使它在所有屏幕上都相等,与屏幕宽度之类的东西相比?例如,我希望我的球在所有设备上在5秒内穿过屏幕,我会使用什么公式?我已经测试了屏幕尺寸和我的applyImpulse使球移动到屏幕边缘的时间之间的关系:注意:每秒点数的计算方法是半屏尺寸除以是时候移动了。该图显示每秒像素数随着屏幕尺寸的增大而降低。如何更改我的applyImpulse以在所有屏幕上工作?(不包括专门为每个设备制作

ios - 设置最低滚动速度

我有一个球,我将它射向空中:它是这样初始化的:funcinitBallNode(){//TODO:CreateballnodeballNode=SKSpriteNode(imageNamed:"Ball1")//CreateaballballNode.zPosition=ZPositions.ballletoffsetFromCorner:CGFloat=20//Offsetfrombottom-leftofscreenballNode.position=CGPoint(x:frame.minX+ballNode.size.width/2+offsetFromCorner,y:fram

swift - 在 Sprite 套件关卡编辑器中创建的场景无法正常工作

我正在尝试这样做一段时间。我有一个名为PlayScene的游戏的主场景。我那里有一个暂停按钮。当玩家点击该按钮时,我想加载另一个名为PauseScene的场景。为了直观地创建该场景,我使用Sprite工具包关卡编辑器。所以我有两个文件PauseScene.swift和PauseScene.sks。但是.sks内容(目前只是背景)并没有取消存档。我真的不知道我在哪里会犯错误。所以这是我通过位于PlayScene的暂停按钮进行的​​转换fortouch:AnyObjectintouches{letlocation=touch.locationInNode(self)ifself.nodeA

swift - 如何在 Swift 中停止/取消 playSoundFileNamed?

我正在尝试制作一个按钮,按下时会播放声音,再次按下时声音会停止。我正在使用playSoundFileNamed:runAction:withKey:和removeActionForKey,但它不起作用。我的另一个问题是,是否有一种方法不仅可以停止声音,还可以暂停它(这样它就会从暂停的同一部分开始,而不是从头开始)。我在stackoverflow看到过类似的话题,但还没有找到我的问题的答案。提前谢谢你。importSpriteKitimportAVFoundationvarfiresoundon=falseprivatevarbackgroundMusicPlayer:AVAudioPl