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

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

ただいまの
回答率

90.85%

  • Unity

    3217questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    624questions

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

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 86

GOTOken

score 11

現状のバグ

イメージ説明

実装したいこと

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

    private IEnumerator DestroyTsumikiAfterAWhile(GameObject tsumiki)
    {

        yield return new WaitForSeconds(DestroyTsumikiTimer); // 設定時間経過後再開
        Destroy(tsumiki); // 積み木削除
        tsumiki_GeneratePoint--; // このタイミングで積み木カウンターをデクリメント
        UIClock.ClockManager += 1;//カウンターが減った時に、+1してあげる。
    }
    private void tsumiki()
    {

        // Spaceキーを入力されたら、積み木Prefabを複製する。

        if (Input.GetKeyDown(KeyCode.Space))
        {
            isBlock = true;
            if (isBlock)
            {
                if (tsumiki_GenerateLimit > tsumiki_GeneratePoint)//限界値達成したら通らない
                {            transform.position += new Vector3(0f, 0.5f, 0f);
            Vector2 position = transform.position + transform.up * tsumikiGeneratePosition.y + transform.right * tsumikiGeneratePosition.x;

                    tsumikiObj = Instantiate(tsumikiPrefabs, position, Quaternion.identity); //積み木Prefabの複製
                    UIClock.ClockManager -= 1;//生成時数値を-1することで、表示を-1する。

                    StartCoroutine(DestroyTsumikiAfterAWhile(tsumikiObj)); // 生成された積み木の削除を予約
                    Debug.Log("true");
                    var Tsumiki_Pos = transform.localPosition;//Player座標取得

                    tsumikiObj.transform.parent = GameObject.Find("Player").transform;//積み木Prefabを親子関係に
                    Debug.Log("くっついた!");
                    tsumiki_GeneratePoint += 1;//生成時に積み木生成個数増加

                }

            }
        }
        else if (Input.GetKeyUp(KeyCode.Space))
        {
            isBlock = false;
            tsumikiObj.transform.parent = null;//親子関係解除
            Debug.Log("解除");
            //tsumikiObj.SetActive(false);
            //GameObjectDestroy();

        }
    }
    #endregion
  //  private void GameObjectDestroy()
    //{

    //   // Destroy(tsumikiObj, DestroyTsumikiTimer);//設定時間到達後積み木削除

    //    //if(tsumikiDestroyFlag)
    //    //積み木生成数を-していく
    //}
    #region
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.name == "DeadPoint")
        {
            Life.LIFE_SYSTEM -= 3;

            // Destroy(gameObject);
        }
        if (collision.gameObject.name == "ClearPoint")
        {
            SceneManager.LoadScene("GameClear");
        }
        if (collision.gameObject.tag == "Ground")
        {
            JumpCounterPoint = 0;
        }
        if(collision.gameObject.tag == "Needle"&& !isBlock)
        {
            Life.LIFE_SYSTEM -= 1;
        }
    }
}
#endregion
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.85%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    UnityのRayについて

    前提・実現したいこと Unityにて敵からプレイヤーに対してRayを飛ばしプレイヤーまでの間に壁などの障害物がないかを確認したいです しかしプレイヤーに対してRayを飛ばしてい

  • 解決済

    Unityのメインカメラのスクリプトについて

    前提・実現したいこと 360°カメラの画像を球体に張り付けてカメラを動かして中を見ようと思い、カメラにアタッチするスクリプトで、とりあえず以下のものを作ろうとしています。 1.

  • 解決済

    untiy terrain機能で作った壁が登れてしまう

    unityで、terrainで作った壁を登れなくしたいです。 キャラクターがジャンプ中に移動方向に進むと、terrainで作った急斜面な山や壁を登れてしまいます。 滑り落ち

  • 解決済

    transform.Findでオブジェクトを取得できない

    私の他の質問と同じ内容に関する内容ですが、問題が絞れてきたので、再度質問させて頂きます。 発生している問題・エラーメッセージ カメラに割り当てたスクリプトで、カメラのz座標

  • 解決済

    プレイヤーが操作を行った後のゲームオブジェクトの座標の取得

    前提・実現したいこと Unity2Dで、 プレイヤーがゲームオブジェクトを操作して移動させる。 ↓ プレイヤーがスペースキーを押したら、その時のゲームオブジェクトの座標

  • 解決済

    Unityでパーティクルを一度だけ再生する方法

    前提・実現したいこと まず、自分が上下運動(浮いたり落ちたり)するシステムを作っています。 そこで、カメラの位置が初期値に来たとき(地面まで落ちてしまったとき)に、 一度だけ

  • 解決済

    Blender-複数のメッシュを一つのアーマチュアで動かす

    Unityで使用するロボットのモデルを製作しています。 ゲームのイベント(腕を飛ばすなど)に応じてロボットをパーツごとに分離できるようにするため、各パーツを別のオブジェクト(メ

  • 解決済

    スクリプトを使用しスプライトをアセットから呼び出し配置する方法

    前提・実現したいこと Unity5.0.2fを使用し マウスクリックや特定オブジェクトの消滅など、 さまざまなアクションをトリガーに、スプライトを使用した アニメーションによるエフ

同じタグがついた質問を見る

  • Unity

    3217questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    624questions