最近ARKitを触ることがあり、
「カメラが向いてる方向に何かを発射したい」
と思ったのですが、結構実装に苦労したので共有します。
if let camera = sceneView.pointOfView { // カメラを取得 // カメラの向いてる方向を計算 let mat = camera.transform let dir = SCNVector3(-1 * mat.m31, -1 * mat.m32 + 0.1, -1 * mat.m33) // 上方向に位置を補正 node.position = SCNVector3Make(camera.position.x, camera.position.y - 0.01, camera.position.z) node.physicsBody?.applyForce(dir, asImpulse: true) } sceneView.scene.rootNode.addChildNode(self)
※sceneViewはARKitで使用するARSCNViewのインスタンス、nodeはSCNNodeのインスタンスです
やってる事自体は単純で、
- nodeの位置をカメラの中心位置に合わせる
- nodeに対して、カメラが向いてる方向に力を加える
の2つだけです。
使用する機会は多そうに見えるのですが、(似たような処理はあるものの)調べても実装方法が出てこなかったので割と試行錯誤しました。
これができればARのシューティングゲームなど、色々作れる気がします。
そして今、ブレイブソフトではARKitを使ったゲームアプリを開発中で、初期verが近々リリースできるかと思います!
リリースしたらまたお知らせしますのでお楽しみにー!
【追記】
「ARケチャマヨバトル」というアプリをリリースしました!
リアルタイムでARで対戦できるゲームとなっていますので、是非ともインストールしてみてください!
インストール
投稿者プロフィール
最新の投稿
- AR・VR2022年6月27日【iOS】ARケチャマヨバトルをアップデートしたときにやったこと
- 技術開発2021年6月22日UIKit(Storyboard)で時間が止まってる人向けのiOS開発リハビリメニュー
- 技術開発2020年10月8日AWSのSESを利用して手動でメールを送信する
- 技術開発2020年9月8日SwiftUIのすすめ – 2. リスト表示 –