トリガー内に入ると赤いパネルが一定回フェードインとフェードアウトを繰り返すようにしたいと思っています。
switch文でループさせることはできたのですが、「一定回」というのがネックで、
switch文を、while文やfor文で囲んでいじってみたものの、点滅のパースが早くなったり、フェードインだけで終わったり、
一定回で終わらなかったり、フリーズしたりと、うまくいきません。お力添えいただけると幸いです。
(timerで時間指定も考えましたが、きっちりフェードアウトが終わった後に処理を終了したいと思っています)
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class emagency_Panel : MonoBehaviour 7{ 8 int i = 0; 9 int state; 10 float r; 11 float g; 12 float b; 13 private Image panel; 14 float alpha; 15 public float fiSpeed; 16 public float foSpeed; 17 18 void Start () 19 { 20 panel = GameObject.Find ("Panel_trap").GetComponent<Image> (); 21 r = GameObject.Find ("Panel_trap").GetComponent<Image> ().color.r; 22 g = GameObject.Find ("Panel_trap").GetComponent<Image> ().color.g; 23 b = GameObject.Find ("Panel_trap").GetComponent<Image> ().color.b; 24 alpha = 0.0f; 25 panel.color = new Color (r, g, b, alpha); 26 state = 0; 27 } 28 29 30 void Update () 31 { 32 33 if(trapTrigger.trapFlag == true) //トリガー内に入ったら 34 { 35 switch (state) 36 { 37 //フェードイン 38 case 0: 39 panel.color = new Color (r, g, b, alpha); 40 alpha += fiSpeed; 41 if (alpha > 0.4f) 42 { 43 alpha = 0.4f; 44 state = 1; 45 } 46 break; 47 //フェードアウト 48 case 1: 49 panel.color = new Color (r, g, b, alpha); 50 alpha -= foSpeed; 51 if (alpha < 0.0f) 52 { 53 alpha = 0.0f; 54 state = 0; 55 } 56 break; 57 } 58 } 59 } 60} 61 62
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/18 13:30