Guest User

Untitled

a guest
May 26th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. import UIKit
  2. import SceneKit
  3.  
  4.  
  5. class KuruKuruViewController: UIViewController {
  6.  
  7. override func viewDidLoad() {
  8. super.viewDidLoad()
  9.  
  10. let scene = GameScene() //適用するsceneを設定する
  11.  
  12.  
  13. // SCNView 設定
  14. let scnView = self.view as! SCNView
  15. scnView.backgroundColor = UIColor.black
  16. scnView.scene = scene
  17. scnView.showsStatistics = true
  18. scnView.allowsCameraControl = true
  19.  
  20. // CUBEジオメトリ
  21. let CUBE:SCNGeometry = SCNBox(width: 3, height: 3, length: 3, chamferRadius: 0.4)
  22. let geometryNode = SCNNode(geometry: CUBE)
  23. scene.rootNode.addChildNode(geometryNode)
  24. let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
  25. scnView.addGestureRecognizer(tapGesture)
  26.  
  27. @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
  28.  
  29. let scnView = self.view as! SCNView
  30.  
  31. let p = gestureRecognize.location(in: scnView) //pにタップした座標を渡す
  32. let hitResults = scnView.hitTest(p, options: [:]) //hitTestでタップした箇所のオブジェクトを検索
  33. var hitfaceIndex = (hitResults.first)?.faceIndex //初めにヒットしたオブジェクトの面のインデックスを返す
  34.  
  35. if hitfaceIndex == 0 {
  36. self.performSegue(withIdentifier: "Segue1", sender: nil)
  37. }
  38. if hitfaceIndex == 1 {
  39. self.performSegue(withIdentifier: "Segue2", sender: nil)
  40. }
  41. if hitfaceIndex == 2 {
  42. self.performSegue(withIdentifier: "Segue3", sender: nil)
  43. }
  44. if hitfaceIndex == 3 {
  45. self.performSegue(withIdentifier: "Segue4", sender: nil)
  46. }
  47. if hitfaceIndex == 4 {
  48. self.performSegue(withIdentifier: "Segue5", sender: nil)
  49. }
  50. if hitfaceIndex == 5 {
  51. self.performSegue(withIdentifier: "Segue6", sender: nil)
  52. }
  53.  
  54. }
  55.  
  56. import UIKit
  57. import SceneKit
  58.  
  59.  
  60. class KuruKuruViewController: UIViewController {
  61.  
  62. override func viewDidLoad() {
  63. super.viewDidLoad()
  64.  
  65. let scene = GameScene()
  66.  
  67. let scnView = self.view as! SCNView
  68. scnView.backgroundColor = UIColor.black
  69. scnView.scene = scene
  70. scnView.showsStatistics = true
  71. scnView.allowsCameraControl = true
  72.  
  73. let CUBE:SCNGeometry = SCNBox(width: 3, height: 3, length: 3, chamferRadius: 0.0)
  74. let geometryNode = SCNNode(geometry: CUBE)
  75. scene.rootNode.addChildNode(geometryNode)
  76.  
  77. //各面毎にマテリアルを設定するためにマテリアル情報を準備
  78. let m1 = SCNMaterial()
  79. let m2 = SCNMaterial()
  80. let m3 = SCNMaterial()
  81. let m4 = SCNMaterial()
  82. let m5 = SCNMaterial()
  83. let m6 = SCNMaterial()
  84.  
  85. //マテリアルにイメージを設定
  86. m1.diffuse.contents = UIImage(named: "1")
  87. m2.diffuse.contents = UIImage(named: "2")
  88. m3.diffuse.contents = UIImage(named: "3")
  89. m4.diffuse.contents = UIImage(named: "4")
  90. m5.diffuse.contents = UIImage(named: "5")
  91. m6.diffuse.contents = UIImage(named: "6")
  92.  
  93. //CUBEの各面のマテリアルに設定
  94. CUBE.materials = [m1, m2, m3, m4, m5, m6]
  95.  
  96. let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
  97. scnView.addGestureRecognizer(tapGesture)
  98.  
  99. }
  100.  
  101. //CUBEの面をタップするとfaceIndexの値をprintする
  102. @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
  103.  
  104. let scnView = self.view as! SCNView
  105. let p = gestureRecognize.location(in: scnView)
  106. let hitResults = scnView.hitTest(p, options: [:])
  107. if let number = hitResults.first?.faceIndex {
  108. print(number)
  109. }
  110.  
  111. }
  112.  
  113. override func didReceiveMemoryWarning() {
  114. super.didReceiveMemoryWarning()
  115. }
  116.  
  117. }
  118.  
  119. @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
  120.  
  121. let scnView = self.view as! SCNView
  122.  
  123. let p = gestureRecognize.location(in: scnView)
  124. let hitResults = scnView.hitTest(p, options: [:])
  125. if let number = hitResults.first?.faceIndex {
  126. print(number)
  127. }
  128. }
Add Comment
Please, Sign In to add comment