複数あるキーアイテムに触れると触れたものがフェードアウトして消えるというスクリプトを書いているのですが、
一個でもアイテムに触れるとアイテムがすべて消えてしまいます。
キーアイテムは最初表示されておらず、あるトリガー内に入ると表示されるようになっています。
触れたものから一個ずつ消えるようにしたいです。お力添えいただけると幸いです。
関連スクリプトは以下の通りです。
C#
1//キーアイテムの基本スクリプト。プレイヤーが触れるとフェードアウトして消える 2public class keyWork : MonoBehaviour 3{ 4 public static bool flag = false ; 5 float alpha = 1.0f ; 6 float R; 7 float G; 8 float B; 9 10 void Start () 11 { 12 R = this.GetComponent<Renderer> ().material.color.r; 13 G = this.GetComponent<Renderer> ().material.color.g; 14 B = this.GetComponent<Renderer> ().material.color.b; 15 } 16 17 void Update () 18 { 19 //フェードアウトして消えるアニメーションを始める 20 if (flag == true) 21 { 22 this.gameObject.GetComponent<Renderer> ().material.color = new Color (R, G, B, alpha); 23 alpha -= 0.2f; 24 if (alpha < 0) 25 { 26 alpha = 0; 27 Destroy(this.gameObject, 1.0f); 28 } 29 } 30 } 31 32 void OnCollisionEnter(Collision col) 33 { 34 //プレイヤーが触れるとコライダーを消す。フェードアウトするアニメーションを始めるフラグをtrueにする 35 if (col.gameObject.tag == "chara") 36 { 37 this.gameObject.GetComponent<Collider> ().enabled = false; 38 flag = true; 39 } 40 } 41} 42
C#
1//トリガーのスクリプト。プレイヤーがトリガー内に入るとキーアイテムが現れるフラグをtrueにする 2public class trapTrigger : MonoBehaviour { 3 4 public static bool trapFlag; 5 6 void Start () 7 { 8 trapFlag = false; 9 } 10 11 void OnTriggerEnter(Collider col) 12 { 13 if (col.gameObject.tag == "chara") 14 { 15 trapFlag = true; 16 } 17 } 18} 19
C#
1//アタッチしたオブジェクトをトリガー内に入ったら表示するようにする 2public class appearWork : MonoBehaviour 3{ 4 private Collider col; 5 6 void Start () 7 { 8 //オブジェクトのコライダーを取得 9 col = this.gameObject.GetComponent<Collider>(); 10 11 //コライダーがあるオブジェクトの場合、最初はコライダー非表示 12 if (col != null) 13 col.enabled = false; 14 //最初はオブジェクト非表示 15 this.gameObject.GetComponent<MeshRenderer>().enabled = false; 16 } 17 18 void Update () 19 { 20 //トリガー内に入ったら 21 if (trapTrigger.trapFlag == true) 22 { 23 //コライダーがあるオブジェクトで、まだキャラクターが触れていないときコライダー表示 24 if(col != null && keyWork.flag == false) 25 col.enabled = true; 26 //オブジェクトを表示 27 this.gameObject.GetComponent<MeshRenderer>().enabled = true; 28 } 29 } 30}
当初はappearWorkでの、トリガー内に入った時のコライダー表示の条件に[keyWork.flag == false]はありませんでしたが、
そうするとトリガー内に入った段階で常にコライダーが表示されるようになり、プレイヤーが触れたあともコライダーが消えなくなってしまったため、[keyWork.flag == false]を追加したところ、コライダーは消えるようになりましたが、今度は題字のように、プレイヤーが触れたあとオブジェクトが一気に消えるようになってしまいました。
プレイヤーが触れた段階で、すべてのオブジェクトのkeyWork内のflagがtrueになってしまっているのだと思っています。
解決方法や、別の問題などがありましたら、ぜひお教えいただきたいです。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/20 13:16