// 寿司 IEnumerator Sushi(ItemCtrl.ITEM_TYPE itemType, int time) { // エフェクト保持用 GameObject effect = null; // 効果中のアイテムリストに寿司がなければ if (!ActivatingItems.Contains(itemType)) { // アイテムコントローラーを取得 var ic = gameManager.GetComponent <ItemCtrl>(); // アイテムに設定したエフェクトを生成 effect = Instantiate(ic.effect[(int)itemType]); // エフェクトをプレイヤーの子オブジェクトにして、プレイヤーに追従 effect.transform.SetParent(this.gameObject.transform, false); } // 効果中のアイテムリストに追加 ActivatingItems.Add(itemType); // 設定時間待つ yield return(new WaitForSeconds(time)); // エフェクトを削除 Destroy(effect); // 効果アイテムリストからこの寿司を削除 ActivatingItems.Remove(itemType); }
//todo: アニメーション制御 //todo: アニメーションのデータを揃える //diary: アニメーションデータとモデル下さい…… /// <summary> /// アイテムをプレイヤーに付与する /// </summary> /// <param name="itemType">アイテムの種類</param> public void AddItem(ItemCtrl.ITEM_TYPE itemType) { // アイテムコントローラーを取得 var itemCtrl = gameManager.GetComponent <ItemCtrl>(); // アイテムによって挙動を追加 switch (itemType) { case ItemCtrl.ITEM_TYPE.BOMB: { // スコアをマイナス MinusScore(itemCtrl.BombMinusScore); // 取得したポジションに爆発エフェクトを生成 var pos = gameObject.transform.position; var effect = Instantiate(itemCtrl.effect[(int)itemType], pos, Quaternion.identity); // 再生時間が終わったら、削除 Destroy(effect, effect.GetComponentInChildren <ParticleSystem>().duration); break; } case ItemCtrl.ITEM_TYPE.WASHTUB: { // 一定時間効果が続くのでコルーチンへ StartCoroutine(WashTub(itemType, itemCtrl.WashTubTime)); break; } case ItemCtrl.ITEM_TYPE.SUSHI: { // 一定時間効果が続くのでコルーチンへ StartCoroutine(Sushi(itemType, itemCtrl.SushiTime)); break; } default: break; } }