我已經創建了一個帶有sprite套件的遊戲,但是在遊戲啓動時,它會直接進入遊戲。我如何通過按屏幕上的標籤或遊戲過程中的聯繫人來實現主菜單和遊戲等場景之間的不同場景以及它們之間的轉換。SpriteKit如何創建並轉換到不同的場景(Swift語言)
回答
看起來你沒有看過蘋果的文檔。他們有一個優秀的SpriteKit指南。此外,spriteKit類別中的RayWenderlich.com教程也非常出色。我還沒有讀懂Swift,但我的理解是Swift可以和Objective-C一起編寫。據說,我會給你一個起點(在Objective-C中)。
1)調用的初始場景:
在您的主視圖控制器,你會想VC的view
財產強制轉換爲SKView
內viewDidLoad
像這樣:
SKView *spriteKitView = (SKView *)self.view;
一些有用的調試物業SKView
:
spriteKitView.showsFPS = YES;
spriteKitView.showsNodeCount = YES;
spriteKitView.showsPhysics = YES;
您必須分別配置每個場景(子類SKScene
)。完成此操作後,將主場景導入到主要VC的類實現中。以呈現主場景(仍在viewDidLoad
):
MyScene *mainScene = [MyScene new];
[spriteKitView presentScene: mainScene];
2)經由標籤(場景之間的過渡或任何其他SKNode
): 設置相關節點作爲屬性,並通過提出一個新的場景:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInNode:self];
if ([self.playAgainButton containsPoint:touchLocation]) {
[self presentGamePlayScene];
} else if([self.mainMenuButton containsPoint:touchLocation]) {
[self presentMainMenu];
}
}
- (void)presentGamePlayScene {
gamePlayScene *newGamePlay = [[gamePlayScene alloc]init];
newGamePlay.scaleMode = SKSceneScaleModeAspectFill;
SKTransition *arbitraryTransition = [SKTransition crossFadeWithDuration:2.0]; //look into SKTransition for a plethora of different options.
[self.view presentScene:newGamePlay transition:arbitraryTransition];
}
3)要通過聯繫方式更改場景,請遵循任何給定SKScene
內的協議SKPhysicsContactDelegate
。在那一幕的實現:
- (void)didBeginContact:(SKPhysicsContact *)contact {
if(contact.bodyA.categoryBitMask == enemyCategory && contact.bodyB.categoryBitMask == arbitraryNodeCategory) {
[self presentGameOverScene];
}
}
的SKPhysicsContact
有2相撞通過屬性附加到它SKPhysicsBody
秒。這些碰撞節點必須已經初始化其SKPhysicsBody
。此外,他們還必須擁有自己的財產contactBitMask
上設置自己的SKPhysicsBody
像這樣:
@implementation SomeNode
- (instanceType)initCollidingNode {
if(self = [super init]) {
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.someSize];
self.physicsBody.contactBitMask = enemyCategory | powerUpCategory;
self.physicsBody.categoryBitMask = arbitraryNodeCategory;
self.physicsBody.dynamic = YES
}
return self;
}
- SKSpriteNode和SKPhysicsBody有其他相關的屬性,你可能需要
我不明白objective-c。 Im在iOS開發中是新的,我從Swift開始,但很難找到一些教程。 – Sourness
請嘗試raywenderlich.com,蘋果在Swift或本iOS博客上的書:http://ios-blog.co.uk/swift-tutorials/ -note:objective-c在可預見的將來仍然是相關的。 – BenJammin
這是在目標C中,而不是Swift,因此不是一個合適的答案。 – jmcmahon443
製作一個名爲:TestScene.Swift
聲明它在你的GameScene.Swift文件中並實現觸摸功能,如下所示:
var sceneTest: TestScene!
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
// Configure the view.
let gameView = self.view as SKView!
/* Sprite Kit applies additional optimizations to improve rendering performance */
gameView.ignoresSiblingOrder = true
sceneTest = TestScene(size: gameView.bounds.size)
gameView.presentScene(sceneTest)
sceneTest.scaleMode = .AspectFill
}
這將呈現一個名爲TestScene的新場景
我在swift中解決了這個問題。
func goToGameScene(){
let gameScene:GameScene = GameScene(size: self.size) // create your new scene
let transition = SKTransition.revealWithDirection(SKTransitionDirection.Down, duration: 0) // create type of transition (you can check in documentation for more transtions)
gameScene.scaleMode = SKSceneScaleMode.AspectFill
self.view!.presentScene(gameScene, transition: transition)
}
創建一個名爲MainMenu的新swift文件。迅速
放置在當前場景下面的代碼將允許在MainMenu.swift描述的場景過渡:
var scene = MainMenu(size: self.size)
let skView = self.view! as SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
在新場景中,你可以使用下面的代碼要回現場在GameScene.swift中描述:
var scene = GameScene(size: self.size)
let skView = self.view! as SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
- 1. SpriteKit如何創建並轉換到不同的場景
- 2. SpriteKit場景轉換XCode 7
- 3. 如何在SpriteKit中轉換場景?
- 4. 用swift替換Spritekit中的場景
- 5. 如何使用SpriteKit切換場景來創建無盡的滾動背景?
- 6. 如何將用戶的分數轉移到Swift和SpriteKit中的其他場景?
- 7. Xcode 6中的場景大小/ SpriteKit/Swift
- 8. SKScene當前場景轉換不能在Spift中使用SpriteKit場景
- 9. 場景在SpriteKit
- 10. Swift - 將一個背景圖像添加到Spritekit場景
- 11. Spritekit:改變場景並保持背景
- 12. SpriteKit場景不被釋放
- 13. Swift:如何跟蹤和交流SpriteKit場景之間的分數
- 14. 如何創建SKSpriteNodes數組? (swift,spritekit)
- 15. SpriteKit場景限制
- 16. Spritekit場景歸檔
- 17. AppleWatch上的SpriteKit - 如何呈現場景?
- 18. 添加SpriteKit背景場景
- 19. Pygame場景 - 如何創建
- 20. 如何在SpriteKit中模糊場景?
- 21. 如何在spritekit場景上呈現uiviewcontroller
- 22. Swift Spritekit消散重力場
- 23. 轉語言創建排列
- 24. 如何切換不同用戶的語言環境/語言
- 25. LUA場景轉換
- 26. AndEngine場景轉換
- 27. R:如何將日期轉換爲不同語言的%b
- 28. PHP如何從不同的語言轉換日期
- 29. 如何使陵68吉尼亞語言轉換到C++語言
- 30. 如何在IOS中同步Swift語言中的不同動作
我在swift中解決了這個問題,你可以在底部找到一些代碼。 – Sourness