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

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

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

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

Q&A

解決済

1回答

19182閲覧

【Unity】オブジェクトにつけたパーティクルをスクリプトから制御したい

sileato

総合スコア18

Unity

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

0グッド

1クリップ

投稿2016/07/18 01:10

シーンを読み込んでから10秒以上50秒以下の間、Cubeオブジェクト(tag:Cube)につけたパーティクル(爆発するようなパーティクル)をCube同士で衝突したとき再生させたくて以下のスクリプトを書きました。

using UnityEngine; using System.Collections; public class collisionEffects : MonoBehaviour { private ParticleSystem particle; // Use this for initialization void Start () { particle = this.GetComponent<ParticleSystem>(); particle.Stop(); } // Update is called once per frame void Update () { } void OnCollisionEnter(Collision collision) { if (Time.timeSinceLevelLoad > 10.0f & Time.timeSinceLevelLoad < 50.0f) { if (collision.gameObject.tag == "Cube") { particle.Play(); //パーティクルの再生 } } } }

が、衝突しても再生されません。
どなたかご教授いただければ幸いです。

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

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

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

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

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

urahimono

2016/07/18 01:31

一つ質問させて下さい。 OnCollisionEnter()には処理は来ていますでしょうか。 OnCollisionEnter()のif(...)より上の行にDebug.Log("Hit");などを記述していただければ、確認できると思います。
sileato

2016/07/18 02:33

お返事遅くなり申し訳ありません。確認したところHitがコンソール表示されなかったため、OnCollisionEnter()にまず処理が来ていないようです。
guest

回答1

0

ベストアンサー

質問に記載されているコードを使ってみたところ、正常に動くのを確認しました。
そのため、コード側ではなくオブジェクト側の設定の間違いが疑われます。
以下の点を確認してみてください。

  • 当てる側と当てられる側の双方にColliderコンポーネントがアタッチされていることの確認

Colliderがついていなければ当然ヒットしません。
間違えて2DColliderコンポーネントがついていないかも確認してみてください。
3D用Colliderと2D用Collider同士では当たりません。
イメージ説明

  • 当てる側と当てられる側のどちらかにRigidbodyコンポーネントがアタッチされていることの確認

どちらかにRigidbodyコンポーネントがアタッチされていないと、OnCollisionEnter()などのヒット時の関数は呼び出されません。
両方についていても大丈夫です。
イメージ説明

  • IsTriggerプロパティはfalseになっているかの確認

今回呼出しを望まれているのはOnCollisionEnter()です。
IsTriggerプロパティがtrueの場合はOnTriggerEnter()の方が呼ばれてしまいます。
チェックボックスが外れているか確認してください。
イメージ説明

  • Colliderと同じGameObjectにスクリプトはアタッチされているかの確認

OnCollisionEnter()が呼ばれるには同じGameObjectColliderがある必要があります。
イメージ説明

お試しください。

投稿2016/07/18 03:52

urahimono

総合スコア714

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

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

sileato

2016/07/18 05:10

スクリプトをアタッチするオブジェクトが間違っていました。 ご教授ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問