Ios 当播放器与对象碰撞时,如何更改视图控制器?
当你的播放器与一个物体碰撞时,我很难弄清楚如何更改视图控制器 我想要一个菜单来弹出显示一个菜单按钮和一个重播按钮,还有一些额外的按钮在这个时候并不重要。我不知道这些游戏结束菜单是如何制作的,我想切换视图控制器,如果你知道它们是如何制作的,请告诉我 这是我目前拥有的代码,它所做的唯一一件事就是显示一个标签,表明游戏结束,当点击该标签时,游戏将重新启动:Ios 当播放器与对象碰撞时,如何更改视图控制器?,ios,iphone,swift,collision,viewcontroller,Ios,Iphone,Swift,Collision,Viewcontroller,当你的播放器与一个物体碰撞时,我很难弄清楚如何更改视图控制器 我想要一个菜单来弹出显示一个菜单按钮和一个重播按钮,还有一些额外的按钮在这个时候并不重要。我不知道这些游戏结束菜单是如何制作的,我想切换视图控制器,如果你知道它们是如何制作的,请告诉我 这是我目前拥有的代码,它所做的唯一一件事就是显示一个标签,表明游戏结束,当点击该标签时,游戏将重新启动: import Foundation import AVFoundation import SpriteKit class GameScene:
import Foundation
import AVFoundation
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var movingGround: PPMovingGround!
var square1: PPSquare1!
var wallGen: PPWallGen!
var diamondGen: PPDiamondGen!
var isStarted = false
var isGameOver = false
var isDiamondContact = false
var playerNode: SKNode!
override func didMoveToView(view: SKView) {
//code that is not important was deleted
func collisionWithDiamond() {
isDiamondContact = true
}
func restart() {
let newScence = GameScene(size: view!.bounds.size)
newScence.scaleMode = .AspectFill
view!.presentScene(newScence)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if isGameOver {
restart()
} else {
square1.flip()
}
}
override func update(currentTime: CFTimeInterval) {
}
// MARK: - SKPhysicsContactDelegate
func didBeginContact(contact: SKPhysicsContact) {
if !isGameOver {
gameOver()
} else {
!isDiamondContact
collisionWithDiamond()
}
}
<代码>导入基础
进口AVF基金会
进口SpriteKit
类游戏场景:SKScene,SKPhysicContactDelegate{
var movingGround:PPMovingGround!
var square1:PPSquare1!
瓦尔·沃根:PPWallGen!
变种钻石:PPDiamondGen!
var isStarted=false
var isGameOver=false
var isDiamondContact=错误
var playerNode:SKNode!
覆盖func didMoveToView(视图:SKView){
//已删除不重要的代码
func与diamond()的冲突{
isDiamondContact=true
}
func restart(){
let newsence=游戏场景(大小:view!.bounds.size)
newsence.scaleMode=.AspectFill
查看!.presentScene(新闻中心)
}
覆盖func touchesBegined(触摸:设置,withEvent事件:UIEvent){
如果游戏结束了{
重新启动()
}否则{
square1.flip()
}
}
覆盖函数更新(currentTime:CFTimeInterval){
}
//MARK:-SKPhysicContactDelegate
func didBeginContact(联系人:SKPhysicsContact){
如果!游戏结束了吗{
gameOver()
}否则{
!isDiamondContact
与钻石的碰撞()
}
}
注意:我已经删除了不相关或不必要的代码
更新: 链接到游戏的游戏: 跳到2:32在屏幕上观看游戏 链接到屏幕上的游戏图像:
(我无法在此发布图像,因为我还没有所需的10个代表积分。)如果游戏结束,你想展示一个选择菜单,你可以展示一个
UIAlertView
,向用户展示你想要的任何选项。从那里他们可以重新启动游戏,或者他们可以选择转到其他视图,比如管理玩家统计信息的视图或其他什么(我不知道你的游戏到底是什么)。//编辑答案
这将是最简单的。创建一个新的GameOverScene.swift,它是一个SKScene。然后使用背景图像、按钮的SKLabelNodes自定义该场景。签出
当游戏在游戏场景中结束时
let gameOverScene: GameOverScene = GameOverScene(size: self.size)
self.view!.presentScene(gameOverScene, transition: SKTransition.doorsOpenHorizontalWithDuration(1.0))
这是一个已经实施的项目
//第一个答案-----------------------------------------------
如果要切换viewController,必须像这样或使用segue显示新的viewController
self.view?.window?.rootViewController?.presentViewController(newView, animated: true, completion: nil)
self.view?.window?.rootViewController?.performSegueWithIdentifier("id", sender: AnyObject)
否则,创建一个SKView并添加按钮,然后在游戏结束时将其添加到场景中,或者在游戏结束前添加、隐藏、然后显示。一旦用户选择一个选项,将其删除或隐藏
SKView.hidden = false
SKView.hidden = true
将SKView添加为
self.view?.addSubview(SKView)
简单视图覆盖
let view1 = SKView(frame: CGRectMake(0, 0, 200, 200))
view1.center = self.view!.center
self.view?.addSubview(view1)
我想要一个自定义的游戏在弹出窗口的东西,我会更新我的帖子与图片和游戏的一个游戏玩链接,这样你就可以看到确切的我想知道如何制作。我已经添加了一个链接到游戏在屏幕上,以帮助你理解我的问题,我还添加了一个图像连同它我需要作出一个新的可可触摸类,并选择一个新的SKView或SKScene的子类?你不必。这里是一个简单的SKView覆盖图。答案编辑你能给我一个例子,你用我的代码输入你上面发布的代码吗,因为我对swift有点陌生,我对一些东西不熟悉。如果你有时间这样做,我将不胜感激!我编辑了我的答案,并链接到一个游戏教程,使用另一个场景作为游戏的结束场景,你可以自定义更多的节点作为按钮来做不同的事情。另外,链接是如何使节点像按钮一样。