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

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

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

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

Q&A

0回答

845閲覧

作成したエフェクトをゲームコントローラーに紐づける方法

teruterubozu_19

総合スコア0

Unity

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

0グッド

0クリップ

投稿2021/02/19 13:38

現在スロットゲームを製作しておりますが、スロットの絵柄が揃ったときに打ち上げ花火があがるエフェクトを作成したのですが、作成したエフェクトは他のゲームプロジェクトに紐づけることはできないのでしょうか?
イメージ説明

これがunityのgamecontroller設定画面であり、
イメージ説明
これがparticleシステムの設定画面です。

私としてはこの花火のようなエフェクトをGamecontrollerにくっつけて、花火が打ちあがるようなエフェクトを出したいとおもっております。
(エフェクトを出すためのコードはGamecontrollerに記入済みです。)

よろしくお願いいたします。

わかりにくい点がありましたら、なんなりとお申し付けいただけると幸いです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/02/20 04:06

文面を読んで、多分こういう事がしたいのかな?って事で "unity package化"で調べてみるといいのではないでしょうか?
teruterubozu_19

2021/02/20 11:07

ありがとうございます。 package化するということは、あの花火のパーティクルをプレハブ化しなくてはならないのですか?
退会済みユーザー

退会済みユーザー

2021/02/20 11:41

そのままを使いたいならプレハブ化した方が都合が良いのでは?とは思います。 ちょっと気になったので言葉の確認をしたいのですが、他の"ゲームプロジェクト"であってますか?他の"ゲームオブジェクト"でなく? 文面下記の内容としてはゲームオブジェクト、の方に読めるので。
teruterubozu_19

2021/02/20 12:07

申し訳ありません。 ゲームオブジェクトの間違いでした。失礼しました。 パッケージ化してから「GameController」というオブジェクトにくっつけて 演出をするつもりでした。 ちなみにですがGameControllerというのは、スロットの動きなどのゲーム全体を管理するオブジェクトであります。
退会済みユーザー

退会済みユーザー

2021/02/20 12:32

パッケージ化についてはとりあえず忘れてください、全く意味が変わってしまいます prefab化に関してはどちらでも構わないですが、プレハブの理解はありますか? 一度に複数の事を理解しようとすると難しくなりますよ。 エラーやバグが出た時に、どれに対するものなのかが分からないでしょうから。 GameControllerから操作したいという事なら、 public GameObject hanabi; を定義してインスペクタから入れて、それを操作するのが手っ取り早いと思うのですが、、、 エフェクトを出すコードがGamecontrollerに記入済みって意味もどうとらえたらいいか分からないです。
teruterubozu_19

2021/02/20 13:40

プレハブはオブジェクトを複製すること、ということでよろしいでしょうか? なお、コードがGamecontrollerに記入済みというのは GetComponent<ParticleSystem>().Play(); をいうコードをGameController.csというスクリプトに記述した、という意味であります。
teruterubozu_19

2021/02/20 13:42

スロットがそろった時の条件スクリプトがGameController.csの中にあるのですが、スロットの絵柄がそろった際にそれらのエフェクトが発生するようにGetComponent<ParticleSystem>().Play();を先に記述した、という意味であります。
退会済みユーザー

退会済みユーザー

2021/02/20 17:40 編集

プレハブは一言で説明すると設計図、ですかね。それを元に生成、複製も簡単にって感じです。 生成して初めてモノ(オブジェクト)が存在する事になります。インスタンスとなります。 Hierarchyに配置したオブジェクトは勝手に生成されてインスタンス化された状態です。 GetComponent<ParticleSystem>().Play();を記述したって事はここでPlayしたい、という願望でしょうか?それとも取得出来ていて再生されないって事ですか? ここは質問とは関係なさそうなので無視してましたが、SubEmitterは子オブジェクトじゃないとダメ!みたいなエラーが出てますがこちらが原因という事は無いですよね?こちらはほとんど触った事が無い機能なのでエラーの原因など回答できないです。 取得できている、という前提ならスタート時を非Activeな状態として、GetComponent<ParticleSystem>().Play();を.SetActive(true);としてActiveに変更する事で再生が可能です。 ただGamecontrollerから操作する、って事なので何かしらの参照が必要です。 基本的に知らない相手に指示は出せません。相手を知るための方法がGetComponentだったり、GameObject.Findだったり、他にもいろいろありますがそういう意味です。 なのでGetComponentの前に参照している変数が必要になりますが、そこは大丈夫でしょうか? hanabi.GetComponent<ParticleSystem>().Play();みたいな感じです。 hanabiは、フィールドにpublic GameObject hanabi;と作り、インスペクタから登録します。 ここでインスペクタから登録する事によってGamecontrollerがhanabiを知る事が出来ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問