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

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

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

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

ARCore

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

C#

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

Unity

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

Q&A

0回答

1697閲覧

【Unity】認識したARマーカー上にエフェクト(パーティクル)を表示できない

howto_o

総合スコア8

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

ARCore

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

C#

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

Unity

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

0グッド

0クリップ

投稿2020/01/13 10:07

編集2020/01/13 10:53

前提・実現したいこと

● 前提
UnityでARを使ったゲーム開発の勉強をしています。

"Button_Judge"というボタンがクリックされた(コードのOnClick関数で判定する)時
2つのマーカー座標上に、それぞれにパーティクル(エフェクト)が表示されるようにしたいです。

● 実現したいこと
認識するマーカーの座標を、グローバル(ワールド)座標の"transform.position"として取得し
Instantiate関数によって、そのマーカーの座標上にパーティクルが表示させることが出来ません。

発生している問題・エラーメッセージ

エラーメッセージ 特になし

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Judge : MonoBehaviour 7{ 8 public GameObject p1_G; 9 public GameObject p1_C; 10 public GameObject p1_P; 11 public GameObject p2_G; 12 public GameObject p2_C; 13 public GameObject p2_P; 14 public Text text_result; 15 public GameObject win_effect; 16 public GameObject lose_effect; 17 // Start is called before the first frame update 18 void Start() 19 { 20 21 } 22 23 // Update is called once per frame 24 void Update() 25 { 26 27 } 28 public void OnClick() 29 { 30 // MeshRenderの状態を見て何が表示されているかを確認 31 Renderer ren_p1_G = p1_G.GetComponent<Renderer>(); 32 Renderer ren_p1_C = p1_C.GetComponent<Renderer>(); 33 Renderer ren_p1_P = p1_P.GetComponent<Renderer>(); 34 Renderer ren_p2_G = p2_G.GetComponent<Renderer>(); 35 Renderer ren_p2_C = p2_C.GetComponent<Renderer>(); 36 Renderer ren_p2_P = p2_P.GetComponent<Renderer>(); 37 38 // それぞれのカードを入れる変数を初期化 39 string result_p1 = ""; 40 string result_p2 = ""; 41 42 // 何が表示されているか判定 43 if(ren_p1_G.enabled == true) // player1にグーが選ばれていた場合 44 { 45 result_p1 = "G"; 46 Debug.Log("result_p1 is %s \n" + result_p1); 47 Debug.Log("result_p2 is %s \n" + result_p2); 48 } 49 if (ren_p1_C.enabled == true) 50 { 51 result_p1 = "C"; 52 Debug.Log("result_p1 is %s \n" + result_p1); 53 Debug.Log("result_p2 is %s \n" + result_p2); 54 } 55 if (ren_p1_P.enabled == true) 56 { 57 result_p1 = "P"; 58 Debug.Log("result_p1 is %s \n" + result_p1); 59 Debug.Log("result_p2 is %s \n" + result_p2); 60 } 61 if (ren_p2_G.enabled == true) 62 { 63 result_p2 = "G"; 64 Debug.Log("result_p1 is %s \n" + result_p1); 65 Debug.Log("result_p2 is %s \n" + result_p2); 66 } 67 if (ren_p2_C.enabled == true) 68 { 69 result_p2 = "C"; 70 Debug.Log("result_p1 is %s \n" + result_p1); 71 Debug.Log("result_p2 is %s \n" + result_p2); 72 } 73 if (ren_p2_P.enabled == true) 74 { 75 result_p2 = "P"; 76 Debug.Log("result_p1 is %s \n" + result_p1); 77 Debug.Log("result_p2 is %s \n" + result_p2); 78 } 79 // 勝敗のジャッジ 80 switch (result_p1) 81 { 82 case "G": 83 if (result_p2 == "G") 84 { 85 text_result.text = "引き分け"; 86 } 87 else if (result_p2 == "C") 88 { 89 text_result.text = "p1の勝ち"; 90 Instantiate(win_effect, p1_G.transform.position, p1_G.transform.rotation); 91 Instantiate(lose_effect, p2_C.transform.position, p2_C.transform.rotation); 92 } 93 else if (result_p2 == "P") 94 { 95 text_result.text = "p2の勝ち"; 96 Instantiate(lose_effect, p1_G.transform.position, p1_G.transform.rotation); 97 Instantiate(win_effect, p2_P.transform.position, p2_P.transform.rotation); 98 } 99 break; 100 case "C": 101 if (result_p2 == "G") 102 { 103 text_result.text = "p2の勝ち"; 104 Instantiate(lose_effect, p1_C.transform.position, p1_C.transform.rotation); 105 Instantiate(win_effect, p2_G.transform.position, p2_G.transform.rotation); 106 } 107 else if (result_p2 == "C") 108 { 109 text_result.text = "引き分け"; 110 } 111 else if (result_p2 == "P") 112 { 113 text_result.text = "p1の勝ち"; 114 Instantiate(win_effect, p1_C.transform.position, p1_C.transform.rotation); 115 Instantiate(lose_effect, p2_P.transform.position, p2_P.transform.rotation); 116 } 117 break; 118 case "P": 119 if (result_p2 == "G") 120 { 121 text_result.text = "p1の勝ち"; 122 Instantiate(win_effect, p1_P.transform.position, p1_P.transform.rotation); 123 Instantiate(lose_effect, p2_G.transform.position, p2_G.transform.rotation); 124 } 125 else if (result_p2 == "C") 126 { 127 Debug.Log("Judged \n"); 128 text_result.text = "p2の勝ち"; 129 Instantiate(lose_effect, p1_P.transform.position, p1_P.transform.rotation); 130 Debug.Log("lose_effect is occured.\n"); 131 Debug.Log("p1_P.transform.position is %d, %d, %d \n" + p1_P.transform.position); 132 Instantiate(win_effect, p2_C.transform.position, p2_C.transform.rotation); 133 Debug.Log("win_effect is occured.\n"); 134 } 135 else if (result_p2 == "P") 136 { 137 text_result.text = "引き分け"; 138 } 139 break; 140 default: 141 Debug.Log("Error\n"); 142 break; 143 } 144 } 145} 146

※コードで仕込んだログ結果も。
イメージ説明

イメージ説明

試したこと

● Debug.Logを仕込み確認した内容

  1. コード上の"transform.position"でマーカーの座標は取れていることは確認しました。
  2. コードの判定文も想定通りに動いています。
  3. パーティクル(エフェクト)の"Play On Awake"はチェックを外しましたが表示されません。

補足情報(FW/ツールのバージョンなど)

Unityのバージョン:2019.2.17f1 Personal
OS:Windows10

一人ではなぜエフェクトが出ないのかわかりませんでした。
どなたか分かる方よろしくお願いいたします。

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

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

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

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

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

sakura_hana

2020/01/14 01:23

・パーティクルを画面中央に生成させ、表示されるか確認する →シェーダーや粒子のサイズのせいで見えないのかもしれない ・指定の位置がカメラの描画範囲内か確認する →大分カメラから遠そうなので設定によっては範囲外かもしれない ・オブジェクトの重ね順を確認する →他オブジェクト(「MeshRenderの状態を見て〜」部分のRenderer群が怪しい)がパーティクルに被っているのかもしれない 以上を試してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問