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

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

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

ARCoreは、グーグル社が提供しているAndroid向けのAR(拡張現実)フレームワークです。スマホ内蔵のカメラとIMUセンサー(慣性計測装置)を使って、モーショントラッキングや水平面の検出、光源の推測を行い、ARを実現します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

Q&A

解決済

1回答

2555閲覧

ARCoreで設置したオブジェクトの一部分を操作したい

Asagiri

総合スコア9

ARCore

ARCoreは、グーグル社が提供しているAndroid向けのAR(拡張現実)フレームワークです。スマホ内蔵のカメラとIMUセンサー(慣性計測装置)を使って、モーショントラッキングや水平面の検出、光源の推測を行い、ARを実現します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

0グッド

0クリップ

投稿2020/08/05 16:51

編集2020/08/06 15:38

少し状況が変わったので内容を少し変えさせています。動かないことは変わっていません。

現在ARCoreを用いて振り子を設置して、パラメータを動かすというものを作成しています。
その前提で最初にボールを停止させて、ボタンで動かすというのを作っています。
イメージ説明
しかし、別シーンでエディタ上に置いたときは動いたのですが、ARに実装して試したのですが動きませんでした。
FurikoはAssets内にありそれを設定しています。
イメージ説明
そのFurikoの子オブジェクトのBallのIs kinematicをオンにしてStartボタンを押すとオフになってボールが揺れるというものを作りたいのです。スクリプトは親オブジェクトのFurikoにつけています。
また、ボタンには上で述べたAssets内にある同じオブジェクトを入れ、下記のプログラムのBall()を設定しています。
![イメージ説明]

親オブジェクトFurikoの子オブジェクトBallに下記のスクリプトをつけています。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ball_script : MonoBehaviour 6{ 7 public Rigidbody rb; 8 9 // Start is called before the first frame update 10 void Start() 11 { 12 //Rigidbodyを取得 13 rb = GetComponent<Rigidbody>(); 14 15 //Rigidbodyを停止 16 rb.isKinematic = true; 17 } 18 19 // Update is called once per frame 20 void Update() 21 { 22 } 23 24 public void Ballmove() 25 { 26 //動かす 27 rb.isKinematic = false; 28 } 29}

また、親オブジェクトでは上記のスクリプトを呼び出すスクリプトをつけています。ボタンにはこれのBall()を呼び出そうとしています。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Furiko_controller : MonoBehaviour 6{ 7 GameObject ball; 8 ball_script script; 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 ball = GameObject.Find("Ball"); 14 script = ball.GetComponent<ball_script>(); 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 } 21 22 public void Ball() 23 { 24    script.Ballmove(); 25 } 26}

エディタ上では動かすことができ、Android端末にARとして設置するとボタンは反応していますがボールは動かないです。
もしかしたら、ボタンにつけたFurikoとAR上に設置したFurikoは違うオブジェクトになってしまっているのではないかと思いましたがどうすればいいかわかりません。
助言お願いいたします。

使用しているもの
Unity2018.4.19f
ARCore
ZenfoneAR(Android7.0)

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

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

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

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

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

sakura_hana

2020/08/06 00:18

どこまで動いているのかを確認して、質問に追記してください。 ・エディタ上だと動作するのか ・ボタンを押すのに成功しているか(確認用のテキストを表示させる等)
sakura_hana

2020/08/06 08:56

本当にButtonのOnClick時に「FurikoオブジェクトのAllスクリプトのmove()」を呼ぶようになっていますか? (一応Buttonコンポーネントのスクショがあるとわかりやすいです)
guest

回答1

0

ベストアンサー

「Assets内にある同じオブジェクトを入れ、下記のプログラムのBall()を設定しています。」
これが原因です。ボタンにはシーン上に生成されたオブジェクトを指定する必要があります。

どういう書き方をするか少し迷うところですが、一案を。
まず以下のようなスクリプトを作ります。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class FurikoController : MonoBehaviour { public void BallMove() { // 最初だけしか呼ばれない想定です。何度も呼び出す場合はRigidbodyを変数にしておいた方がいいです。 if (GameObject.Find("Ball") == null) return; GameObject.Find("Ball").GetComponent<Rigidbody>().isKinematic = false; } }

このコードを最初からシーン上に存在するGameObjectに付与します(例えば「HelloAR Controller」)。
Buttonからは、クリック時にこのオブジェクトのBallMove()を呼ぶようにします。
また、Furikoプレハブの中のBallオブジェクトのRigidbodyのKinematicはインスペクターからオンにしておきます。

こうすると、「ボタンを押した時、"Ball"という名前のGameObjectを探し、そこに付いたRigidbodyのisKinematicをfalseにする」という処理になるので正しく動作するかと思います。
なお"Ball"という名前のGameObjectが存在しないと動作しませんので注意してください。

投稿2020/08/07 01:41

sakura_hana

総合スコア11427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問