質問編集履歴

2 修正

GOTOken

GOTOken score 54

2018/07/07 08:16  投稿

パーティクルシステムについて
![イメージ説明](2edd9b89f19a73709618892ba3126e8c.gif)  
gif画像のようにビームのようなものを作ろうとしました。  
![イメージ説明](463aacc9b67a6759f74d44a7574bde8a.gif)  
が、Play画面にすると生成位置で静止してしまっています。ので、生成する際にgif画像のようなイメージになるようにしたいです。  
設定画面  
---  
![イメージ説明](69571de74a792e1615bc70d242dd9407.png)  
このような場合は、Shapeをいじるとよいのでしょうか??  
生成するときのスクリプト & 再生するためのスクリプト
---
Particleを使いビームの表現をするために、SetActiveを使いON,Offの切り替えをしようとしました。
1発目は無事発射出来たのですが、2発目から出なくなってしまいました。
座標がおかしいから?と思い、コルーチン終了後に
```c#
再生するため(ParticleにAdd Compnentしています)
transform.position = (Particle).transform.position
```
みたいにし、パーティクルを元の場所に戻そうとしましたが、思ったとおりにいきませんでした。
これを、出せるようにするにはどのようにすればいいですか???
```c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChargeShot : MonoBehaviour {
   public ParticleSystem particle;
   // Use this for initialization
   void Start () {
       particle = GetComponent<ParticleSystem>();
       particle.Play();   
   }
   
   // Update is called once per frame
   void Update () {
       
   }
}
  private GameObject Lv1;
  private GameObject Lv2;
  private GameObject Lv3;
```
```c#
生成するためのスクリプト
   void Start () {
       this.rb2d = GetComponent<Rigidbody2D>();  
       Lv1 = GameObject.Find("Lv1");  
       Lv2 = GameObject.Find("Lv2");  
       Lv3 = GameObject.Find("Lv3");  
 
       Lv1.SetActive(false);  
       Lv2.SetActive(false);  
       Lv3.SetActive(false);  
   }  
void Update()  
{  
       if (Input.GetKeyUp(KeyCode.Joystick1Button1))
       {
           switch (LV)
           {
               case 1:
                   Instantiate(ChargeShot_Lv1, transform.localPosition, Quaternion.identity);
                   StartCoroutine(ChargeShotLv1());
                   Debug.Log("生成Lv1");
                   break;
               case 2:
                   Instantiate(ChargeShot_Lv2, transform.position, Quaternion.identity);
                   StartCoroutine(ChargeShotLv2());
                   Debug.Log("生成Lv2");
                   break;
               case 3:
                   Instantiate(ChargeShot_Lv3, transform.position, Quaternion.identity);
                   StartCoroutine(ChargeShotLv3());
                   Debug.Log("生成Lv3");
                   break;
           }
           LV = 0;  
           ChargePower = 0;  
       }  
}  
       private IEnumerator ChargeShotLv1()  
   {  
       Lv1.SetActive(true);  
       yield return new WaitForSeconds(Lv1_ShotTimer);  
   }  
   private IEnumerator ChargeShotLv2()  
   {  
       Lv2.SetActive(true);  
       yield return new WaitForSeconds(Lv2_ShotTimer);  
   }  
   private IEnumerator ChargeShotLv3()  
   {  
       Lv3.SetActive(true);  
 
       yield return new WaitForSeconds(Lv3_ShotTimer);  
   }  
 
```
生成する際に、transform.positionが関係しているのでしょうか??生成する際に、生成位置にのみにしかパーティクルが出ていません。
この場合は、どのようにすればパーティクルは、viewのときと同じ挙動を取ることができるのでしょうか??
  • Unity

    12096 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    3906 questions

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

  • Unity2D

    2870 questions

  • C#

    16389 questions

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

  • C++

    8678 questions

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

1 修正

GOTOken

GOTOken score 54

2018/07/06 22:50  投稿

パーティクルシステムについて
![イメージ説明](2edd9b89f19a73709618892ba3126e8c.gif)
gif画像のようにビームのようなものを作ろうとしました。
![イメージ説明](463aacc9b67a6759f74d44a7574bde8a.gif)
が、Play画面にすると生成位置で静止してしまっています。ので、生成する際にgif画像のようなイメージになるようにしたいです。
設定画面
---
![イメージ説明](69571de74a792e1615bc70d242dd9407.png)
このような場合は、Shapeをいじるとよいのでしょうか??
生成するときのスクリプト & 再生するためのスクリプト
---
```c#
再生するため(ParticleにAdd Compnentしています)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChargeShot : MonoBehaviour {
   public ParticleSystem particle;
   // Use this for initialization
   void Start () {
       particle = GetComponent<ParticleSystem>();
       particle.Play();   
   }
   
   // Update is called once per frame
   void Update () {
       
   }
}
```
```c#
生成するためのスクリプト
       if (Input.GetKeyUp(KeyCode.Joystick1Button1))
       {
           switch (LV)
           {
               case 1:
                   Instantiate(ChargeShot_Lv1, transform.localPosition, Quaternion.identity);
                   Debug.Log("生成Lv1");
                   break;
               case 2:
                   Instantiate(ChargeShot_Lv2, transform.position, Quaternion.identity);
                   Debug.Log("生成Lv2");
                   break;
               case 3:
                   Instantiate(ChargeShot_Lv3, transform.position, Quaternion.identity);
                   Debug.Log("生成Lv3");
                   break;
           }
```
Instantiateに関しては、作成したParticleに対してそのまま生成の処理をかけているので問題は無い様な気もしますが・・・。
Particleの再生に関してはPlay以外の使い方でよいと思えるのがわかりませんでしたので、スクリプトで間違っている箇所はないように思えます・・・。
生成する際に、transform.positionが関係しているのでしょうか??生成する際に、生成位置にのみにしかパーティクルが出ていません。
この場合は、どのようにすればパーティクルは、viewのときと同じ挙動を取ることができるのでしょうか??
  • Unity

    12096 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    3906 questions

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

  • Unity2D

    2870 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る