Unityでジャンクゲームを作っているっぽい

会社帰りにGPD PocketにUnity入れてゲーム作ってます

【アクツクMV】10_ランダムに敵を複数地点から生成したい

方針

  • ランダム値を共通変数に代入
  • 変数によって、スポーンポイントを判定

ランダムの取得

ランダムを入れる変数用意

素材→変数で共通変数を用意
これであれば、どこからでもランダム値にアククセス可能になる

画像もモーションもない空のオブジェクトを用意

重力は無効にするのを忘れないように

random(0-4)アクション


ランダム値を共通変数に代入する
今回は0~4のランダムで

random(0-4) → wait

一定時間経過で遷移
この時間がスポーン間隔になる
あとあと変数にして可変できるようにするのも良さそう

waitアクション
wait → random(0-4)

とくに設定は無し

シーンに配置

画面の隅っこに配置
これでランダム値が発生する

スポーンポイントを作る

ここから、ランダム変数で判定して敵を生成する
敵生成時の敵の向きは、スポーンポイントの向きと同じにするよ想定

アニメーションを用意

左右の向きが欲しいだけなので、アニメ自体は1フレームで当たり判定等は無し

オブジェクトを用意

今回は右向きの用意。左向きはモーションの向きをleftにするだけ

flagを用意

毎回1体だけ生成したいのでflagを用意

stand_byアクション

特に設定なし。重力は無効にしておく
モーションの向きの設定が大事(他のアクションも同じにしておく)

stand_by → spawn

ランダム値とこのスポーンポイント番号が同じかどうか判定
今回は↓のように設定してみた

  • 右向きスポーンポイント…1
  • 左向きスポーンポイント…2

同時に、1回だけ処理flagがoffかどうか判定

詳細は


spawnアクション

敵を生成。生成時の向きはスポーンポイントと同じ向き
そして、1回だけ処理flagをonにする

詳細は


spawn → stand_by
wait → stand_by

一定時間経過で戻ります

waitアクション

これは、ランダム値がスポーンポイント番号と異なった場合の処理
敵生成はしないけど、処理を回すためflagを制御

詳細は

stand_by → wait

ランダム値とこのスポーンポイント番号が異なるかどうか判定
同時に、1回だけ処理flagがonかどうか判定
ということは…もしランダムで同じ数字が連続しても、敵は連続で生成されないのか…まっ、いっかw

詳細は


シーンに並べてみる

左右から敵ランダム生成できたー
youtu.be