にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング 箱を積み上げるゲーム(4)一個だけにする

(注意)
この連載は、ある程度ゲームを作ったことある人の
ためのものです。「アタッチ」とか「C#スクリプト
の作成」とか「カメラアングルの変更」とか、その
レベルの話は
省略しています。よろしくお願いしま
す。
  

www.nsnq.tech

 
前回の続きでーす。

とりあえずどわーっと出るのは嫌なので、スクリプトを
変えていきます。安直にflagを作っておきます。
そして、ついでにScoreも作っちゃいましょう。

0で射出できる状態。
1は射出できない状態。
Blockが出てくると、flagを1にして
Fieldに落ちると、flagを0に戻します。


(Gene側のプログラム GameC)

 
//インスタンス用
    public GameObject blk;

    //スコア
    public int Score = 0;

    //フラグ
    public int flag = 0;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Space)&&flag==0)
        {

            //オブジェクトを生成する
            Instantiate(blk, new Vector3(transform.position.x, transform.position.y - 1, transform.position.z), Quaternion.identity);

            //フラグを立てて
            flag = 1;

            //スコアを加算する
            Score += 1;
        }
    }


(Block側のプログラム BlockC)

   //Gene格納用
    GameObject GeneP;

    //GameC格納用
    GameC GC;

    void Start()
    {
        //Geneを発見する
        GeneP = GameObject.Find("Gene");

        //スクリプトを取得する
        GC = GeneP.GetComponent<GameC>();
    }

    void Update()
    {
        
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag=="blocks") {
            GC.flag = 0;                   
        }
    }



確かに、1個ずつにはなりますが。
2個目からは?あれ?出てこなくなりました。

f:id:koharuwest:20200213224822p:plain




続きは次回!


質問があればDMやらコメントをお願いします。

それではよきプログラミングライフを!
またね。