【第8回】ボール(敵)の作り方(ランダムに動く敵キャラを作ろう!)

FUnity Unity
FUnity

こんにちは、パパコーダーです!

第8回では、主人公が避ける対象となる
ボール(敵キャラ) を作っていきます。

今回作るボールは、Scratch のプログラムと同じように…

  • ゲームが続いている間だけ表示される(変数「あと」で制御)
  • コスチュームを切り替えながら、ランダムな場所へ移動し続ける
  • 時間が 0 になったら消える(当たり判定もなくなる)

という、“逃げる相手”としての基本的な動きを作ります。

この回は 変数「あと」判定の部分はいったん省略して、
「表示→ずっと→次のコスチューム→1秒でどこかへ」だけ確認します。

🎨 ボール(敵)の作り方(ランダムに動く敵キャラを作ろう!)


🎨 1. ボール Actor を作ろう

まずは「Ball」という Actor を新規作成します。

  1. FUnity → Create → FUnityActorData を選ぶ
  2. 名前を Ball にする
  3. Create ボタンを押す

見た目(Sprite)は丸い画像がオススメです。

Ball の Sprites の設定
Ball の Sprites の設定

準備できたら、BallAvoidance_ProjectData の Actors に Ball_Actor を追加しておきましょう。

Actors に Ball を追加
Actors に Ball を追加

🕹 2. ボールのスクリプトを開く

  1. Ball_ScriptGraph.asset を選択(Assets/FUnity/Projects/.../Actors/Ball/ の中)
  2. Inspector の [Edit Graph] をクリック

これで、ボールの動きを Visual Scripting で作れる状態になりました。


⏰ 3. 「あと」が 0 になったらボールを消す

まずは、Scratch の左側のスクリプトにあたる部分から作ります。

やりたいことはとてもシンプルで、

  • ゲーム中ずっと「変数『あと』の値」を監視する
  • 「あと = 0」になったらボールを隠す

Scratch では次のようなブロックになっていました。

Scratch のプログラム
Scratch のプログラム
あとが0になったらボールを消す
あとが0になったらボールを消す

FUnity でも同じイメージで、

  • 緑の旗が押されたとき
  • ずっと
  • 変数「あと」を取得して「0 と等しいか?」を判定する もし〇なら
  • 等しければ 隠す

という流れで組んでみてください。
これで時間切れになったときにボールがちゃんと消えるようになります。


🏃‍♂️ 4. 残り時間がある間は動き続ける

次に、Scratch の右側のスクリプトを再現します。

こちらでは、

  • ゲーム開始時に表示する
  • 「あと」が 0 でない間は、コスチュームを変えながらランダムな場所へ移動する
  • 「あと」が 0 になったら隠す

という動きを作っています。

Scratch 側のブロックはこんな感じです。

Scratch のプログラム
Scratch のプログラム
1秒でランダムな場所へ行く
1秒でランダムな場所へ行く

FUnity でも同じ構成で作ってみましょう。

  • 緑の旗が押されたとき
  • 表示する
  • ずっと
  • If(条件:変数「あと」 ≠ 0)
  • True のとき:
    • 次のコスチュームにする
    • 1秒でどこかの場所へ行く
  • False のとき:
    • 隠す

これで、残り時間がある間だけボールが出現し、
アニメーションしながら画面のどこかへ移動し続ける動きになります。

「1秒」の部分を変えると、ボールの移動のテンポを調整できます。
速くしたいときは 0.5 秒、ゆっくりにしたいときは 1.5 秒など、いろいろ試してみてください。


🎉 5. 動きを確認しよう

Unity の 再生(▶)ボタン を押して、ボールの動きを確認します。
(変数「あと」が未定義なので、確認しやすいように調整しましょう)

次のようになっていれば成功です。

  • ゲーム開始と同時にボールが表示される
  • コスチュームがパタパタ切り替わり、アニメーションして見える
  • 1秒ごとに画面のどこかへ移動する
  • (カウントダウン処理で)変数「あと」が 0 になったタイミングでボールが消える

もしうまく動かない場合は、

  • 緑の旗が押されたとき から ずっと まで正しくつながっているか
  • If の条件が「= 0」か「≠ 0」か、間違えていないか
  • 表示する / 隠す をそれぞれ正しい場所に置いているか
  • Ball Actor がステージ上にちゃんと配置されているか

などをチェックしてみてください。


🌟 6. 応用編:ボールを増やして難易度アップ

今回作った Ball.actor を複製して、ステージ上に複数配置すると、
一気に難易度がアップします。
複数にするなら、判定が“名前一致”の場合は同名運用できる仕組み(クローン/複製方法)を使います。

それぞれのボールは同じスクリプトで動きますが、
初期位置をバラバラにしたり、コスチュームを変えたりすると、
より賑やかな画面になります。

また、〇秒でランダムな場所へ行く の秒数を変えて

  • 速いボール(0.5 秒で移動)
  • 遅いけれど大きいボール

といったバリエーションを作るのもおすすめです。


🔜 次回:第9回「60秒生存のクリア判定」

次回は、プレイヤーが60秒生き残ったら勝ち!
というクリア判定を作っていきます。
ボールの動きと「あと」の変化が、いよいよゲームのルールとしてつながってきますよ。

コメント

タイトルとURLをコピーしました