AR Defence

網媒二 R06944024 曾郁翔

登入與資料庫


遊戲暫停與關卡


旋轉問題

Facebook login

使用 Facebook SSO Login

同時,有小名模式,不需要留真實資料

Google Firebase 資料庫

即時同步分數資料,

不過與 ARKit 的多人模式 Protocol 會打架需則一

遊戲暫停與關卡

使用三種方法暫停遊戲邏輯

對敵機, 飛彈與敵機生成飛彈的邏輯需要關掉

ViewController.swift

Entity.swift

遊戲暫停  1/2

@objc func pauseAction(sender: UIButton!) {
        isPause = !isPause //On/Off 切換
        sceneView.scene.physicsWorld.speed = isPause ? 0 : 1 //set physics world speed to zero 但是實際的 iOS 的 Update 值並不會停止
        sceneView.scene.isPaused = isPause //true 物理世界停止,但是其他的物件持續運動
        
        for entity in entities {
            entity.isPause = isPause //所有 entity 皆可以暫停
        }

    }
//同時,要把 Entity 的 update function 內的調用 position 的 if 去做條件去除
if isMobile, !isPause, let target = target, let lookAtPoint = lookAtPoint {
  let nodePos = node.position
...

  node.position = SCNVector3(nodePos.x + distRaw.x * speedFactor, nodePos.y + distRaw.y * speedFactor, nodePos.z + distRaw.z * speedFactor)

EnemyShip.swift

遊戲暫停  2/2

// 母機暫停停止發飛彈,但已經發出去的物理還是會執行,只是不會碰撞。
// 1/120 chance of firing per frame.
if !super.isPause && arc4random_uniform(500) == 0 {
  fire(view, target: position)
}

最後,我們要將停止中的敵機停止產生飛彈

AR Defence

By txshon Tseng

AR Defence

  • 339