{"id":3236,"date":"2014-10-31T22:43:05","date_gmt":"2014-10-31T13:43:05","guid":{"rendered":"http:\/\/lepetit-prince.net\/ios\/?p=3236"},"modified":"2014-10-31T22:43:05","modified_gmt":"2014-10-31T13:43:05","slug":"%e5%ba%8a%e7%a9%b4","status":"publish","type":"post","link":"https:\/\/lepetit-prince.net\/ios\/?p=3236","title":{"rendered":"\u5e8a\u7a74"},"content":{"rendered":"<p>\b<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/-rT-6cqWcAUc\/VFORe0BLK7I\/AAAAAAAAC2g\/BofMzvYVsxU\/s288\/Screen%2520Shot%25202014-10-31%2520at%252010.40.53%2520PM.png\" width=\"288\" height=\"164\" alt=\"iPhone\u5e8a\u7a74\" class=\"alignnone\" \/><br \/>\n<\/p>\n<p>\n\u5e8a\u306e\u7a74\u3092\u304f\u3050\u3063\u3066\u3069\u3093\u3069\u3093\u3057\u305f\u306b\u9032\u3093\u3067\u3044\u304fiPhone\u30a2\u30d7\u30ea\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\n<\/p>\n<p><!--more--><\/p>\n<p>\b<br \/>\n<br \/>\n\b<iframe loading=\"lazy\" width=\"467\" height=\"350\" src=\"https:\/\/www.youtube.com\/embed\/Zhb9160x_6k?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><br \/>\n<br \/>\n\b<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span style=\"color: #bb2ca2\">import<\/span> UIKit<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span style=\"color: #bb2ca2\">import<\/span> SceneKit<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa\"><span style=\"color: #bb2ca2\">class<\/span><span style=\"color: #000000\"> ViewController: <\/span>UIViewController<span style=\"color: #000000\">, <\/span>SCNSceneRendererDelegate<span style=\"color: #000000\"> {<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">weak<\/span> <span style=\"color: #bb2ca2\">var<\/span> scene : <span style=\"color: #703daa\">SCNScene<\/span>?<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">weak<\/span> <span style=\"color: #bb2ca2\">var<\/span> marker : <span style=\"color: #703daa\">UIView<\/span>?<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">override<\/span> <span style=\"color: #bb2ca2\">func<\/span> viewDidLoad() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">super<\/span>.<span style=\"color: #3d1d81\">viewDidLoad<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #31595d\">setupScene<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">backgroundColor<\/span> = <span style=\"color: #703daa\">UIColor<\/span>(hue: <span style=\"color: #272ad8\">0.8<\/span>, saturation: <span style=\"color: #272ad8\">0.8<\/span>, brightness: <span style=\"color: #272ad8\">0.7<\/span>, alpha: <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #31595d\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><\/span><span style=\"color: #bb2ca2\">self<\/span><span style=\"color: #000000\">.<\/span>createCamera<span style=\"color: #000000\">()<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #31595d\">createPlate<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #31595d\">createBall<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #31595d\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><\/span><span style=\"color: #bb2ca2\">self<\/span><span style=\"color: #000000\">.<\/span>createMarker<span style=\"color: #000000\">()<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> setupScene() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> w = <span style=\"color: #3d1d81\">CGRectGetMaxX<\/span>(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">bounds<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> sv = <span style=\"color: #703daa\">SCNView<\/span>(frame: <span style=\"color: #703daa\">CGRect<\/span>(x: <span style=\"color: #272ad8\">0<\/span>, y: <span style=\"color: #272ad8\">0<\/span>, width: w, height: w))<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>sv.<span style=\"color: #703daa\">backgroundColor<\/span> = <span style=\"color: #703daa\">UIColor<\/span>(hue: <span style=\"color: #272ad8\">0.1<\/span>, saturation: <span style=\"color: #272ad8\">0.4<\/span>, brightness: <span style=\"color: #272ad8\">1<\/span>, alpha: <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>sv.<span style=\"color: #703daa\">scene<\/span> = <span style=\"color: #703daa\">SCNScene<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>sv.<span style=\"color: #703daa\">delegate<\/span> = <span style=\"color: #bb2ca2\">self<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #3d1d81\">addSubview<\/span>(sv)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span> = sv.<span style=\"color: #703daa\">scene<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> createCamera() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> camera = <span style=\"color: #703daa\">SCNNode<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>camera.<span style=\"color: #703daa\">name<\/span> = <span style=\"color: #d12f1b\">&#8220;camera&#8221;<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>camera.<span style=\"color: #703daa\">camera<\/span> = <span style=\"color: #703daa\">SCNCamera<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>camera.<span style=\"color: #703daa\">position<\/span> = <span style=\"color: #703daa\">SCNVector3<\/span>(x: <span style=\"color: #272ad8\">0<\/span>, y: <span style=\"color: #272ad8\">40<\/span>, z: <span style=\"color: #272ad8\">30<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">rootNode<\/span>.<span style=\"color: #3d1d81\">addChildNode<\/span>(camera)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> createPlate() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">for<\/span> i <span style=\"color: #bb2ca2\">in<\/span> <span style=\"color: #272ad8\">0<\/span>&#8230;<span style=\"color: #272ad8\">3<\/span> {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> plate = <span style=\"color: #703daa\">SCNNode<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> holeRow = <span style=\"color: #3d1d81\">arc4random<\/span>() % <span style=\"color: #272ad8\">2<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> holeCol = <span style=\"color: #3d1d81\">arc4random<\/span>() % <span style=\"color: #272ad8\">2<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> hole = <span style=\"color: #272ad8\">5<\/span> * (holeRow + <span style=\"color: #272ad8\">1<\/span>) + (holeCol + <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">for<\/span> j <span style=\"color: #bb2ca2\">in<\/span> <span style=\"color: #272ad8\">0<\/span>..&lt;<span style=\"color: #272ad8\">25<\/span> {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">if<\/span> j == <span style=\"color: #703daa\">Int<\/span>(hole) {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">continue<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> x = <span style=\"color: #703daa\">Float<\/span>(j % <span style=\"color: #272ad8\">5<\/span>) * <span style=\"color: #272ad8\">5.0<\/span> &#8211; <span style=\"color: #272ad8\">10.0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> z = <span style=\"color: #703daa\">Float<\/span>(j \/ <span style=\"color: #272ad8\">5<\/span>) * <span style=\"color: #272ad8\">5.0<\/span> &#8211; <span style=\"color: #272ad8\">10.0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> box = <span style=\"color: #703daa\">SCNBox<\/span>(width: <span style=\"color: #272ad8\">5<\/span>, height: <span style=\"color: #272ad8\">1<\/span>, length: <span style=\"color: #272ad8\">5<\/span>, chamferRadius: <span style=\"color: #272ad8\">0<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>box.<span style=\"color: #703daa\">firstMaterial<\/span>?.<span style=\"color: #703daa\">diffuse<\/span>.<span style=\"color: #703daa\">contents<\/span> = <span style=\"color: #703daa\">UIColor<\/span>(hue: <span style=\"color: #272ad8\">0.3<\/span>, saturation: <span style=\"color: #272ad8\">0.4<\/span>, brightness: <span style=\"color: #272ad8\">1<\/span>, alpha: <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> boxNode = <span style=\"color: #703daa\">SCNNode<\/span>(geometry: box)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>boxNode.<span style=\"color: #703daa\">position<\/span> = <span style=\"color: #703daa\">SCNVector3<\/span>(x: x, y: <span style=\"color: #703daa\">Float<\/span>(i) * <span style=\"color: #272ad8\">10<\/span>, z: z)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>boxNode.<span style=\"color: #703daa\">physicsBody<\/span> = <span style=\"color: #703daa\">SCNPhysicsBody<\/span>.<span style=\"color: #3d1d81\">staticBody<\/span>()<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">rootNode<\/span>.<span style=\"color: #3d1d81\">addChildNode<\/span>(boxNode)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> createBall() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> ball = <span style=\"color: #703daa\">SCNSphere<\/span>(radius: <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ball.<span style=\"color: #703daa\">firstMaterial<\/span>?.<span style=\"color: #703daa\">diffuse<\/span>.<span style=\"color: #703daa\">contents<\/span> = <span style=\"color: #703daa\">UIColor<\/span>(hue: <span style=\"color: #272ad8\">0.4<\/span>, saturation: <span style=\"color: #272ad8\">0.4<\/span>, brightness: <span style=\"color: #272ad8\">0.8<\/span>, alpha: <span style=\"color: #272ad8\">1<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> ballNode = <span style=\"color: #703daa\">SCNNode<\/span>(geometry: ball)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ballNode.<span style=\"color: #703daa\">name<\/span> = <span style=\"color: #d12f1b\">&#8220;ball&#8221;<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ballNode.<\/span>physicsBody<span style=\"color: #000000\"> = <\/span>SCNPhysicsBody<span style=\"color: #000000\">.<\/span><span style=\"color: #3d1d81\">dynamicBody<\/span><span style=\"color: #000000\">()<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ballNode.<span style=\"color: #703daa\">physicsBody<\/span>?.<span style=\"color: #703daa\">physicsShape<\/span> = <span style=\"color: #703daa\">SCNPhysicsShape<\/span>(geometry: ball, options: <span style=\"color: #bb2ca2\">nil<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ballNode.<\/span>physicsBody<span style=\"color: #000000\">?.<\/span>allowsResting<span style=\"color: #000000\"> = <\/span><span style=\"color: #bb2ca2\">false<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>ballNode.<span style=\"color: #703daa\">position<\/span> = <span style=\"color: #703daa\">SCNVector3<\/span>(x: <span style=\"color: #272ad8\">0<\/span>, y: <span style=\"color: #272ad8\">50<\/span>, z: <span style=\"color: #272ad8\">0<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">rootNode<\/span>.<span style=\"color: #3d1d81\">addChildNode<\/span>(ballNode)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> createMarker() {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> marker = <span style=\"color: #703daa\">UIView<\/span>(frame: <span style=\"color: #703daa\">CGRect<\/span>(x: <span style=\"color: #272ad8\">0<\/span>, y: <span style=\"color: #272ad8\">0<\/span>, width: <span style=\"color: #272ad8\">30<\/span>, height: <span style=\"color: #272ad8\">30<\/span>))<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>marker.<span style=\"color: #703daa\">layer<\/span>.<span style=\"color: #703daa\">cornerRadius<\/span> = <span style=\"color: #272ad8\">4<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3d1d81\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>marker.<\/span><span style=\"color: #703daa\">transform<\/span><span style=\"color: #000000\"> = <\/span>CGAffineTransformMakeRotation<span style=\"color: #000000\">(<\/span><span style=\"color: #703daa\">CGFloat<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #703daa\">M_PI<\/span><span style=\"color: #000000\">)<\/span>\/<span style=\"color: #272ad8\">4.0<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>marker.<span style=\"color: #703daa\">center<\/span> = <span style=\"color: #703daa\">CGPoint<\/span>(x: <span style=\"color: #3d1d81\">CGRectGetMidX<\/span>(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">bounds<\/span>), y: <span style=\"color: #3d1d81\">CGRectGetMidY<\/span>(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">bounds<\/span>) <span style=\"color: #3d1d81\">*<\/span> <span style=\"color: #272ad8\">1.5<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa\"><span style=\"color: #000000\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>marker.<\/span>backgroundColor<span style=\"color: #000000\"> = <\/span>UIColor<span style=\"color: #000000\">.<\/span><span style=\"color: #3d1d81\">blackColor<\/span><span style=\"color: #000000\">()<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #3d1d81\">addSubview<\/span>(marker)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">marker<\/span> = marker<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">override<\/span> <span style=\"color: #bb2ca2\">func<\/span> touchesBegan(touches: <span style=\"color: #703daa\">NSSet<\/span>, withEvent event: <span style=\"color: #703daa\">UIEvent<\/span>) {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">var<\/span> p = touches.<span style=\"color: #3d1d81\">anyObject<\/span>()!.locationInView(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">marker<\/span>?.<span style=\"color: #703daa\">center<\/span> = p<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>p = <span style=\"color: #703daa\">CGPoint<\/span>(x: p.<span style=\"color: #703daa\">x<\/span> <span style=\"color: #3d1d81\">&#8211;<\/span> <span style=\"color: #3d1d81\">CGRectGetMidX<\/span>(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">bounds<\/span>), y: p.<span style=\"color: #703daa\">y<\/span> <span style=\"color: #3d1d81\">&#8211;<\/span> <span style=\"color: #3d1d81\">CGRectGetMaxY<\/span>(<span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #703daa\">view<\/span>.<span style=\"color: #703daa\">bounds<\/span>) <span style=\"color: #3d1d81\">*<\/span> <span style=\"color: #272ad8\">3.0<\/span> <span style=\"color: #3d1d81\">\/<\/span> <span style=\"color: #272ad8\">4.0<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">physicsWorld<\/span>.<span style=\"color: #703daa\">gravity<\/span> = <span style=\"color: #703daa\">SCNVector3<\/span>(x: <span style=\"color: #703daa\">Float<\/span>(p.<span style=\"color: #703daa\">x<\/span>)\/<span style=\"color: #272ad8\">40<\/span>, y: &#8211;<span style=\"color: #272ad8\">9<\/span>, z: <span style=\"color: #703daa\">Float<\/span>(p.<span style=\"color: #703daa\">y<\/span>)\/<span style=\"color: #272ad8\">40<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px\"><span class=\"Apple-converted-space\">\u00a0\u00a0 \u00a0<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">func<\/span> renderer(aRenderer: <span style=\"color: #703daa\">SCNSceneRenderer<\/span>, didSimulatePhysicsAtTime time: <span style=\"color: #703daa\">NSTimeInterval<\/span>) {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">if<\/span> <span style=\"color: #bb2ca2\">let<\/span> ball = <span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">rootNode<\/span>.<span style=\"color: #3d1d81\">childNodeWithName<\/span>(<span style=\"color: #d12f1b\">&#8220;ball&#8221;<\/span>, recursively: <span style=\"color: #bb2ca2\">false<\/span>) {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">if<\/span> <span style=\"color: #bb2ca2\">let<\/span> camera = <span style=\"color: #bb2ca2\">self<\/span>.<span style=\"color: #4f8187\">scene<\/span>?.<span style=\"color: #703daa\">rootNode<\/span>.<span style=\"color: #3d1d81\">childNodeWithName<\/span>(<span style=\"color: #d12f1b\">&#8220;camera&#8221;<\/span>, recursively: <span style=\"color: #bb2ca2\">false<\/span>) {<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #bb2ca2\">let<\/span> y = ball.<span style=\"color: #3d1d81\">presentationNode<\/span>().<span style=\"color: #703daa\">position<\/span>.<span style=\"color: #703daa\">y<\/span> + <span style=\"color: #272ad8\">10<\/span><\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>camera.<span style=\"color: #703daa\">position<\/span> = <span style=\"color: #703daa\">SCNVector3<\/span>(x: camera.<span style=\"color: #703daa\">position<\/span>.<span style=\"color: #703daa\">x<\/span>, y: y, z: camera.<span style=\"color: #703daa\">position<\/span>.<span style=\"color: #703daa\">z<\/span>)<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\"><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}<\/p>\n<p style=\"margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo\">}<\/p>\n<p>\b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\b \u5e8a\u306e\u7a74\u3092\u304f\u3050\u3063\u3066\u3069\u3093\u3069\u3093\u3057\u305f\u306b\u9032\u3093\u3067\u3044\u304fiPhone&#8230;<\/p>\n","protected":false},"author":2,"featured_media":3238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[125,24,126,124],"class_list":["post-3236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ios","tag-ios8","tag-iphone","tag-scenekit","tag-swift"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/lepetit-prince.net\/ios\/wp-content\/uploads\/3022034b72d72889127283b971613d3a.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/posts\/3236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3236"}],"version-history":[{"count":1,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/posts\/3236\/revisions"}],"predecessor-version":[{"id":3237,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/posts\/3236\/revisions\/3237"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=\/wp\/v2\/media\/3238"}],"wp:attachment":[{"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lepetit-prince.net\/ios\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}