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

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

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

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

Q&A

1回答

2351閲覧

生成時にtrue,生成後にfalseまたは、消えたらfalseになる処理

GOTOken

総合スコア54

Unity

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

0グッド

1クリップ

投稿2018/06/05 13:44

編集2018/06/05 21:37

現状のバグ

イメージ説明
実装したいこと

今回躓いたところは、SPACEキーを入力した時にisBlockがtrueになることで、判定を作るというものでした。
ですが、処理の入れるところを間違っているのか、キー入力中にブロックが消えても判定状態になってしまっているので、falseの処理を入れるタイミングがどこが適切かご教授していただきたいと思っています。

c#

1 private IEnumerator DestroyTsumikiAfterAWhile(GameObject tsumiki) 2 { 3 4 yield return new WaitForSeconds(DestroyTsumikiTimer); // 設定時間経過後再開 5 Destroy(tsumiki); // 積み木削除 6 tsumiki_GeneratePoint--; // このタイミングで積み木カウンターをデクリメント 7 UIClock.ClockManager += 1;//カウンターが減った時に、+1してあげる。 8 } 9 private void tsumiki() 10 { 11 12 // Spaceキーを入力されたら、積み木Prefabを複製する。 13 14 if (Input.GetKeyDown(KeyCode.Space)) 15 { 16 isBlock = true; 17 if (isBlock) 18 { 19 if (tsumiki_GenerateLimit > tsumiki_GeneratePoint)//限界値達成したら通らない 20 { transform.position += new Vector3(0f, 0.5f, 0f); 21 Vector2 position = transform.position + transform.up * tsumikiGeneratePosition.y + transform.right * tsumikiGeneratePosition.x; 22 23 tsumikiObj = Instantiate(tsumikiPrefabs, position, Quaternion.identity); //積み木Prefabの複製 24 UIClock.ClockManager -= 1;//生成時数値を-1することで、表示を-1する。 25 26 StartCoroutine(DestroyTsumikiAfterAWhile(tsumikiObj)); // 生成された積み木の削除を予約 27 Debug.Log("true"); 28 var Tsumiki_Pos = transform.localPosition;//Player座標取得 29 30 tsumikiObj.transform.parent = GameObject.Find("Player").transform;//積み木Prefabを親子関係に 31 Debug.Log("くっついた!"); 32 tsumiki_GeneratePoint += 1;//生成時に積み木生成個数増加 33 34 } 35 36 } 37 } 38 else if (Input.GetKeyUp(KeyCode.Space)) 39 { 40 isBlock = false; 41 tsumikiObj.transform.parent = null;//親子関係解除 42 Debug.Log("解除"); 43 //tsumikiObj.SetActive(false); 44 //GameObjectDestroy(); 45 46 } 47 } 48 #endregion 49 // private void GameObjectDestroy() 50 //{ 51 52 // // Destroy(tsumikiObj, DestroyTsumikiTimer);//設定時間到達後積み木削除 53 54 // //if(tsumikiDestroyFlag) 55 // //積み木生成数を-していく 56 //} 57 #region 58 private void OnCollisionEnter2D(Collision2D collision) 59 { 60 if (collision.gameObject.name == "DeadPoint") 61 { 62 Life.LIFE_SYSTEM -= 3; 63 64 // Destroy(gameObject); 65 } 66 if (collision.gameObject.name == "ClearPoint") 67 { 68 SceneManager.LoadScene("GameClear"); 69 } 70 if (collision.gameObject.tag == "Ground") 71 { 72 JumpCounterPoint = 0; 73 } 74 if(collision.gameObject.tag == "Needle"&& !isBlock) 75 { 76 Life.LIFE_SYSTEM -= 1; 77 } 78 } 79} 80#endregion 81 82

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

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

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

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

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

guest

回答1

0

「スペースキーが押されている間も積み木が全部消えたらそのタイミングでfalseになってほしい」ということなら、
DestroyTsumikiAfterAWhile内部のtsumiki_GeneratePoint--;次の行以降に
if (tsumiki_GeneratePoint == 0) { isBlock = false; }とでもすればいいかと思います。

投稿2018/06/06 01:10

sakura_hana

総合スコア11427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問