江上宿六です。
だいたい前回の続きなんですけども、Prefabについては掘り下げていないので
タイトルに関しては変わっています。 プロジェクトやシーンはそのままです。
さて前回はクリックしたらSphereを生成するように作りましたが、今回は
時間経過によって自動で生成するようにしてみます。 難しい事はないです。
早速SphereGeneratorスクリプトを編集します。
変わった所と言えば7行目、deltaというfloat型の変数が宣言されている点と、
10行目、Update内でそのdeltaにTime.deltaTimeを加算している所、11行目で
そのdeltaが1.0f以上ならdeltaを1.0f減算し、Instantiateをするという感じに
なっている所ですね。
Time.deltaTimeですが、これは前回のUpdateが呼ばれてから再び呼ばれるまでに
かかった時間を保持するもので、自分の環境で確認した所だいたい0.0166とか
入っていました。 その値をdeltaに加算していき1.0になるタイミングというのは
1秒が経過した時になるわけなんです。
1秒が経過したらプレハブからオブジェクトを生成し、再び1秒を測るために
1.0を引いています。 これ教本だとdeltaを0にしてるんですけど、個人的に
気持ちが悪いので1.0引いてます、誤差でしょうけども。 では実行しましょう。
こんな感じで正確には分からないにしても1秒くらいの感覚で生成されています。
時間を計れることで出来るのは敵や弾の時限生成だけでなく、幅広く使う事が
出来るので覚えておくと役に立つと思います。
この生成間隔をいじるには、もちろんif文の1.0を変えれば良いわけですけども、
なんとなくこういう方法を提案してみます。
targetという変数をpublicで宣言し1.0で初期化しました。 if文の所の1.0や
条件が通ったときにdeltaから引く値をtargetにしました。 これでこのtargetの
1.0を変更すれば自由に生成間隔を変えられますね。
だけだと思ったら大違いです。 publicにしてるのでインスペクターから
生成間隔をいじることが出来るんですよね、これ。 便利だなあ。
極端に小さい値にして遊ぶのは基本です、しかしだいたい0.0166くらいが限度。
それくらいに一回くらいしかUpdateは呼ばれませんからね、基本的に。
という事で今回はここまでにしますか。
次回は、とりあえず乱数とかについて記してみるかもしれません。