質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Q&A

解決済

1回答

736閲覧

SceneKitでアニメーションをさせたいが、SCNSceneからChildNodeを取得できずに困っています

hodoru3sei

総合スコア284

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

0グッド

0クリップ

投稿2020/06/14 01:56

困っていること

SceneKitで移動を伴うアニメーションを実装しようと思っているのですが、sceneに追加したchildNodeを取り出す段階で取り出すことができずにハマってしまっています。

現状

SceneKitにおけるアニメーションの実施方法と使い分けについてという記事を参考にプログラムを作りました。
記事では3Dオブジェクトを使っていたので名前があったと思うのですが、私はSCNGeometoryを動かしたいと思っていたので名前は自分でつけました。

swift

1class GameViewController: UIViewController { 2 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 let scene = SCNScene() 7 let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1) 8 box.name = "box" 9 scene.rootNode.addChildNode(SCNNode(geometry: box)) 10 11 //ライトを作成 12 let lightNode = SCNNode() 13 lightNode.light = SCNLight() 14 lightNode.light!.type = .omni 15 lightNode.position = SCNVector3(x: 0, y: 10, z: 10) 16 scene.rootNode.addChildNode(lightNode) 17 18 //カメラの作成 19 let cameraNode = SCNNode() 20 cameraNode.camera = SCNCamera() 21 scene.rootNode.addChildNode(cameraNode) 22 cameraNode.position = SCNVector3(x: 0, y: 0, z: 15) 23 24 let scnView = self.view as! SCNView 25 scnView.scene = scene 26 27 if let boxNode = scnView.scene?.rootNode.childNode(withName: "box", recursively: true) { 28 let move = SCNAction.moveBy(x: 0, y: 0, z: -30, duration: 3) 29 30 boxNode.runAction(move) 31 } 32 33 } 34}

こちらboxNodeが取得できない原因がわかりましたら教えていただきたいです????‍♂️
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

原因は、"SCNBox"に対して名前を設定しているからと思われます。
"SCNNode"に対して名前を設定したら改善しませんでしょうか。

動作未検証ですが、以下はどうでしょうか。

Swift

1// ↓この状態だとSCNBoxに名前を付けている 2let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1) 3box.name = "box" 4 5// 以下の様に、SCNNodeに対して名前を付ける様に修正 6let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1) 7let node = SCNNode(geometry: box) 8node.name = "box" 9scene.rootNode.addChildNode(node)

投稿2020/06/14 17:40

編集2020/06/14 17:43
tsuki01

総合スコア1751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hodoru3sei

2020/06/17 04:02

なるほど!! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問