二代目備忘録スマートフォン用の表示で見る二代目備忘録2018-07-19Unity備忘録12頁目「時間経過で自動生成」Unity江上宿六です。だいたい前回の続きなんですけども、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は呼ばれませんからね、基本的に。いう事で今回はここまでにしますか。次回は、とりあえず乱数とかについて記してみるかもしれません。前回の+α程度の事しかやってないのに微妙に長い。