回答編集履歴
11
誤字を修正
answer
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
[追記]
|
2
|
-
指定した再生位置でパーティクルを表示するという内容を
|
1
|
+
[追記]ご指摘いただきました「指定した再生位置でパーティクルを表示する」という内容を踏まえてソースを少し修正しました。
|
3
2
|
|
4
3
|
> Fキーを押した瞬間だけ、パーティクルを表示する。それ以外の時はパーティクルは非表示。
|
5
4
|
|
10
ソースを修正
answer
CHANGED
@@ -34,8 +34,8 @@
|
|
34
34
|
{
|
35
35
|
if (Input.GetKeyDown(KeyCode.F) && pObject.isStopped){
|
36
36
|
pObject.gameObject.SetActive(true);
|
37
|
-
|
37
|
+
pObject.Simulate(4.0f, true, false); //追記
|
38
|
-
pObject.Play();
|
38
|
+
pObject.Play(); //追記
|
39
39
|
StartCoroutine(delay(particleDelayTime,()=>{
|
40
40
|
pObject.gameObject.SetActive(false);
|
41
41
|
}));
|
9
ソースを修正
answer
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
void Update()
|
34
34
|
{
|
35
|
-
if (Input.GetKeyDown(
|
35
|
+
if (Input.GetKeyDown(KeyCode.F) && pObject.isStopped){
|
36
36
|
pObject.gameObject.SetActive(true);
|
37
37
|
pObject.Simulate(4.0f, true, false);
|
38
38
|
pObject.Play();
|
8
スクリプトを訂正
answer
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
[追記]
|
2
|
+
指定した再生位置でパーティクルを表示するという内容を見落としていただのでソースを少し修正しています。
|
3
|
+
|
1
4
|
> Fキーを押した瞬間だけ、パーティクルを表示する。それ以外の時はパーティクルは非表示。
|
2
5
|
|
3
6
|
それだけでよければ以下コードでいけます。適当なオブジェクトに以下コードをアタッチしてインスペクタ上から該当パーティクルを指定してください。
|
@@ -31,6 +34,8 @@
|
|
31
34
|
{
|
32
35
|
if (Input.GetKeyDown("f") && pObject.isStopped){
|
33
36
|
pObject.gameObject.SetActive(true);
|
37
|
+
pObject.Simulate(4.0f, true, false);
|
38
|
+
pObject.Play();
|
34
39
|
StartCoroutine(delay(particleDelayTime,()=>{
|
35
40
|
pObject.gameObject.SetActive(false);
|
36
41
|
}));
|
7
誤字を修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
それだけでよければ以下コードでいけます。適当なオブジェクトに以下コードをアタッチしてインスペクタ上から該当パーティクルを指定してください。
|
4
4
|
|
5
|
-
※パーティクルが設定されたオブジェクトに以下スクリプトをアタッチしても動かないと思うので、パーティクルが指定されたオブジェクト以外に
|
5
|
+
※パーティクルが設定されたオブジェクトに以下スクリプトをアタッチしても動かないと思うので、パーティクルが指定されたオブジェクト以外にアタッチしてください。
|
6
6
|
|
7
7
|
|
8
8
|
###実装のポイント
|
6
注意を追加
answer
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
それだけでよければ以下コードでいけます。適当なオブジェクトに以下コードをアタッチしてインスペクタ上から該当パーティクルを指定してください。
|
4
4
|
|
5
|
+
※パーティクルが設定されたオブジェクトに以下スクリプトをアタッチしても動かないと思うので、パーティクルが指定されたオブジェクト以外に設定してください。
|
6
|
+
|
7
|
+
|
5
8
|
###実装のポイント
|
6
9
|
パーティクルシステムをplay / stopしなくても、オブジェクトを非表示にすると勝手に止まります。その状態で再表示すると勝手に始まります。それを利用した実装になります。
|
7
10
|
|
5
ソースの修正
answer
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
{
|
29
29
|
if (Input.GetKeyDown("f") && pObject.isStopped){
|
30
30
|
pObject.gameObject.SetActive(true);
|
31
|
-
StartCoroutine(
|
31
|
+
StartCoroutine(delay(particleDelayTime,()=>{
|
32
32
|
pObject.gameObject.SetActive(false);
|
33
33
|
}));
|
34
34
|
//for Debug
|
@@ -36,7 +36,7 @@
|
|
36
36
|
}
|
37
37
|
}
|
38
38
|
|
39
|
-
IEnumerator
|
39
|
+
IEnumerator delay(float waitTime,UnityAction action)
|
40
40
|
{
|
41
41
|
yield return new WaitForSeconds(waitTime);
|
42
42
|
action();
|
4
表現を修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
using System.Collections;
|
11
11
|
using UnityEngine.Events;
|
12
12
|
|
13
|
-
public class
|
13
|
+
public class particleForFkey : MonoBehaviour {
|
14
14
|
|
15
15
|
//他で使うかもしれないのでParticleSystemを指定してますが以下コードで問題なければGameObjectに書き直してもいいです。
|
16
16
|
[SerializeField]
|
3
表現を修正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
[SerializeField]
|
17
17
|
ParticleSystem pObject;
|
18
18
|
|
19
|
-
//ここでパーティクルが
|
19
|
+
//ここでパーティクルが停止される時間を指定
|
20
20
|
float particleDelayTime = .2f;
|
21
21
|
|
22
22
|
void Awake()
|
2
実装のポイントを追記
answer
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
それだけでよければ以下コードでいけます。適当なオブジェクトに以下コードをアタッチしてインスペクタ上から該当パーティクルを指定してください。
|
4
4
|
|
5
|
+
###実装のポイント
|
6
|
+
パーティクルシステムをplay / stopしなくても、オブジェクトを非表示にすると勝手に止まります。その状態で再表示すると勝手に始まります。それを利用した実装になります。
|
7
|
+
|
5
8
|
```C#
|
6
9
|
using UnityEngine;
|
7
10
|
using System.Collections;
|
1
引用がおかしかったので修正
answer
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
|
1
|
+
> Fキーを押した瞬間だけ、パーティクルを表示する。それ以外の時はパーティクルは非表示。
|
2
2
|
|
3
|
-
> Fキーを押した瞬間だけ、パーティクルを表示する。それ以外の時はパーティクルは非表示。
|
4
3
|
それだけでよければ以下コードでいけます。適当なオブジェクトに以下コードをアタッチしてインスペクタ上から該当パーティクルを指定してください。
|
5
4
|
|
6
5
|
```C#
|