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

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

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

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

Unity3D

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

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

3648閲覧

パーティクルシステムについて

GOTOken

総合スコア54

C#

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

Unity3D

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

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/06 10:17

編集2018/07/06 23:16

Particleを使いビームの表現をするために、SetActiveを使いON,Offの切り替えをしようとしました。
1発目は無事発射出来たのですが、2発目から出なくなってしまいました。
座標がおかしいから?と思い、コルーチン終了後に

c#

1transform.position = (Particle).transform.position

みたいにし、パーティクルを元の場所に戻そうとしましたが、思ったとおりにいきませんでした。
これを、出せるようにするにはどのようにすればいいですか???

c#

1 2 3 private GameObject Lv1; 4 private GameObject Lv2; 5 private GameObject Lv3; 6 7 8 void Start () { 9 10 this.rb2d = GetComponent<Rigidbody2D>(); 11 12 Lv1 = GameObject.Find("Lv1"); 13 Lv2 = GameObject.Find("Lv2"); 14 Lv3 = GameObject.Find("Lv3"); 15 16 Lv1.SetActive(false); 17 Lv2.SetActive(false); 18 Lv3.SetActive(false); 19 } 20void Update() 21{ 22 if (Input.GetKeyUp(KeyCode.Joystick1Button1)) 23 { 24 switch (LV) 25 { 26 case 1: 27 StartCoroutine(ChargeShotLv1()); 28 Debug.Log("生成Lv1"); 29 break; 30 case 2: 31 StartCoroutine(ChargeShotLv2()); 32 Debug.Log("生成Lv2"); 33 34 break; 35 case 3: 36 StartCoroutine(ChargeShotLv3()); 37 Debug.Log("生成Lv3"); 38 39 break; 40 } 41 LV = 0; 42 ChargePower = 0; 43 } 44} 45 private IEnumerator ChargeShotLv1() 46 { 47 Lv1.SetActive(true); 48 yield return new WaitForSeconds(Lv1_ShotTimer); 49 } 50 private IEnumerator ChargeShotLv2() 51 { 52 Lv2.SetActive(true); 53 yield return new WaitForSeconds(Lv2_ShotTimer); 54 } 55 private IEnumerator ChargeShotLv3() 56 { 57 Lv3.SetActive(true); 58 59 yield return new WaitForSeconds(Lv3_ShotTimer); 60 } 61 62

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

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

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

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

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

guest

回答1

0

Play On Awakeがオンの場合、GameObjectをオンオフするだけでも正常に動作するようです。

Play On Awakeがオフの場合は
Lv1.SetActive(true);の次の行に
Lv1.GetComponent<ParticleSystem>().Play();と追加すると動くのではないでしょうか。

それでも変わらない場合、以下の点を確認してください。
・Sceneビュー上でパーティクルのオブジェクトを見て実際にパーティクルが出ているか確認する(座標ズレとの問題切り分け)
・Debug.Logを確認し目的のメソッド(ChargeShotLv1など)に入っているか確認する
・別スクリプトからパーティクルをStopしていないか確認する


ちなみにtransform.position = (Particle).transform.positionですが、
「このスクリプトが付いたオブジェクトの位置をパーティクルオブジェクトの位置にする」
というコードなので当然パーティクルオブジェクトの位置は変わりません。
パーティクルオブジェクトの位置を変えたいなら記載が逆です。
(Particle).transform.position = transform.position

投稿2018/07/08 01:41

編集2018/07/08 01:43
sakura_hana

総合スコア11427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問