Advertisement
Guest User

30 seconds Timer

a guest
Apr 17th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 4.19 KB | None | 0 0
  1. import UIKit
  2. import QuartzCore
  3. import SceneKit
  4.  
  5. class GameViewController: UIViewController, SCNSceneRendererDelegate {
  6.  
  7.     var gameView:SCNView!
  8.     var SceneGame:SCNScene!
  9.     var NodeCamera:SCNNode!
  10.     var targetCreationTime:TimeInterval = 0
  11.  
  12.     //HERE THE TIME
  13.         var time: CGFloat = 30
  14.  
  15.     override func viewDidLoad() {
  16.         super.viewDidLoad()
  17.  
  18.         View_in()
  19.         initScene()
  20.         initCamera()
  21.         //Let's create this method
  22.         // call initTimer() after all your initialization
  23.         initTimer()
  24.     }
  25.  
  26.     //Here's the function
  27.     func initTimer(){
  28.         //One second before decrease the time
  29.     let wait = SCNAction.wait(forDuration: 1)
  30.  
  31.     //This is the heart of this answer
  32.    // An action that reduce the time and when it is less than 1 (it reached zero) do whatever you want
  33.  
  34.     let reduceTime = SCNAction.run{ _ in
  35.         self.time -= 1
  36.         if self.time < 1 {
  37.             // Do whatever you want
  38.             // for example show a game over scene or something else
  39.             print("Remaining time: \(self.time)")
  40.             }
  41.         }
  42.     }
  43.  
  44.     self.SceneGame.rootNode.run(SCNAction.repeatForever(SCNAction.sequence([wait,reduceTime])))
  45.     }
  46.  
  47.     func View_in(){
  48.         gameView = self.view as! SCNView
  49.         gameView.allowsCameraControl = true
  50.         gameView.autoenablesDefaultLighting = true
  51.  
  52.         gameView.delegate = self
  53.     }
  54.  
  55.     func initScene (){
  56.         SceneGame = SCNScene()
  57.         gameView.scene = SceneGame
  58.  
  59.         gameView.isPlaying = true
  60.  
  61.     }
  62.  
  63.     func initCamera(){
  64.         NodeCamera = SCNNode()
  65.         NodeCamera.camera = SCNCamera()
  66.  
  67.         NodeCamera.position = SCNVector3(x:0, y:5, z:10)
  68.  
  69.         SceneGame.rootNode.addChildNode(NodeCamera)
  70.     }
  71.  
  72.     func createTarget(){
  73.  
  74.         let geometry:SCNGeometry = SCNPyramid( width: 1, height: 1, length: 1)
  75.  
  76.         let randomColor = arc4random_uniform(2
  77.             ) == 0 ? UIColor.green : UIColor.red
  78.  
  79.         geometry.materials.first?.diffuse.contents = randomColor
  80.  
  81.         let geometryNode = SCNNode(geometry: geometry)
  82.         geometryNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
  83.  
  84.  
  85.         if randomColor == UIColor.red {
  86.             geometryNode.name = "enemy"
  87.         }else{
  88.             geometryNode.name = "friend"
  89.         }
  90.  
  91.  
  92.         SceneGame.rootNode.addChildNode(geometryNode)
  93.  
  94.  
  95.         let randomDirection:Float = arc4random_uniform(2) == 0 ? -1.0 : 1.0
  96.  
  97.         let force = SCNVector3(x: randomDirection, y: 15, z: 0)
  98.  
  99.         geometryNode.physicsBody?.applyForce(force, at: SCNVector3(x: 0.05, y: 0.05, z: 0.05), asImpulse: true)
  100.     }
  101.  
  102.     func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
  103.         if time > targetCreationTime{
  104.             createTarget()
  105.             targetCreationTime = time + 0.6
  106.         }
  107.  
  108.         cleanUp()
  109.     }
  110.  
  111.     override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  112.         let touch = touches.first!
  113.  
  114.         let location = touch.location(in: gameView)
  115.  
  116.         let hitList = gameView.hitTest(location, options: nil)
  117.  
  118.         if let hitObject = hitList.first{
  119.             let node = hitObject.node
  120.  
  121.             if node.name == "friend" {
  122.                 node.removeFromParentNode()
  123.                 self.gameView.backgroundColor = UIColor.black
  124.             }else {
  125.                 node.removeFromParentNode()
  126.                 self.gameView.backgroundColor = UIColor.red
  127.             }
  128.         }
  129.     }
  130.  
  131.     func cleanUp() {
  132.         for node in SceneGame.rootNode.childNodes {
  133.             if node.presentation.position.y < -2 {
  134.                 node.removeFromParentNode()
  135.             }
  136.         }
  137.     }
  138.  
  139.     override var shouldAutorotate: Bool {
  140.         return true
  141.     }
  142.  
  143.     override var prefersStatusBarHidden: Bool {
  144.         return true
  145.     }
  146.  
  147.     override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
  148.         if UIDevice.current.userInterfaceIdiom == .phone {
  149.             return .allButUpsideDown
  150.         } else {
  151.             return .all
  152.         }
  153.     }
  154.  
  155.     override func didReceiveMemoryWarning() {
  156.         super.didReceiveMemoryWarning()
  157.         // Release any cached data, images, etc that aren't in use.
  158.     }
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement