Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- import SceneKit
- class KuruKuruViewController: UIViewController {
- override func viewDidLoad() {
- super.viewDidLoad()
- let scene = GameScene() //適用するsceneを設定する
- // SCNView 設定
- let scnView = self.view as! SCNView
- scnView.backgroundColor = UIColor.black
- scnView.scene = scene
- scnView.showsStatistics = true
- scnView.allowsCameraControl = true
- // CUBEジオメトリ
- let CUBE:SCNGeometry = SCNBox(width: 3, height: 3, length: 3, chamferRadius: 0.4)
- let geometryNode = SCNNode(geometry: CUBE)
- scene.rootNode.addChildNode(geometryNode)
- let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
- scnView.addGestureRecognizer(tapGesture)
- @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
- let scnView = self.view as! SCNView
- let p = gestureRecognize.location(in: scnView) //pにタップした座標を渡す
- let hitResults = scnView.hitTest(p, options: [:]) //hitTestでタップした箇所のオブジェクトを検索
- var hitfaceIndex = (hitResults.first)?.faceIndex //初めにヒットしたオブジェクトの面のインデックスを返す
- if hitfaceIndex == 0 {
- self.performSegue(withIdentifier: "Segue1", sender: nil)
- }
- if hitfaceIndex == 1 {
- self.performSegue(withIdentifier: "Segue2", sender: nil)
- }
- if hitfaceIndex == 2 {
- self.performSegue(withIdentifier: "Segue3", sender: nil)
- }
- if hitfaceIndex == 3 {
- self.performSegue(withIdentifier: "Segue4", sender: nil)
- }
- if hitfaceIndex == 4 {
- self.performSegue(withIdentifier: "Segue5", sender: nil)
- }
- if hitfaceIndex == 5 {
- self.performSegue(withIdentifier: "Segue6", sender: nil)
- }
- }
- import UIKit
- import SceneKit
- class KuruKuruViewController: UIViewController {
- override func viewDidLoad() {
- super.viewDidLoad()
- let scene = GameScene()
- let scnView = self.view as! SCNView
- scnView.backgroundColor = UIColor.black
- scnView.scene = scene
- scnView.showsStatistics = true
- scnView.allowsCameraControl = true
- let CUBE:SCNGeometry = SCNBox(width: 3, height: 3, length: 3, chamferRadius: 0.0)
- let geometryNode = SCNNode(geometry: CUBE)
- scene.rootNode.addChildNode(geometryNode)
- //各面毎にマテリアルを設定するためにマテリアル情報を準備
- let m1 = SCNMaterial()
- let m2 = SCNMaterial()
- let m3 = SCNMaterial()
- let m4 = SCNMaterial()
- let m5 = SCNMaterial()
- let m6 = SCNMaterial()
- //マテリアルにイメージを設定
- m1.diffuse.contents = UIImage(named: "1")
- m2.diffuse.contents = UIImage(named: "2")
- m3.diffuse.contents = UIImage(named: "3")
- m4.diffuse.contents = UIImage(named: "4")
- m5.diffuse.contents = UIImage(named: "5")
- m6.diffuse.contents = UIImage(named: "6")
- //CUBEの各面のマテリアルに設定
- CUBE.materials = [m1, m2, m3, m4, m5, m6]
- let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
- scnView.addGestureRecognizer(tapGesture)
- }
- //CUBEの面をタップするとfaceIndexの値をprintする
- @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
- let scnView = self.view as! SCNView
- let p = gestureRecognize.location(in: scnView)
- let hitResults = scnView.hitTest(p, options: [:])
- if let number = hitResults.first?.faceIndex {
- print(number)
- }
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
- }
- @objc func handleTap(_ gestureRecognize: UIGestureRecognizer) {
- let scnView = self.view as! SCNView
- let p = gestureRecognize.location(in: scnView)
- let hitResults = scnView.hitTest(p, options: [:])
- if let number = hitResults.first?.faceIndex {
- print(number)
- }
- }
Add Comment
Please, Sign In to add comment