Unityに関連する記事です

 以下の内容で順番に実装を進めていきます。

手順27 ーゴール地点に花輪を用意するー
47.移動する花輪を作り、プレファブにする
48.ダイブの目標地点用に複数の花輪のプレファブを設置する



 新しい学習内容は、以下の通りです。

 ・スクリプトを利用して1つのゲームオブジェクトに複数の役割を与える




47.移動する花輪を作り、プレファブにする

1.設計


 花輪のゲームオブジェクトには FlowerCircle スクリプトがアタッチされていますので、これを修正することで、
移動する花輪を作成できるようにします。

 移動に必要な設定用の変数を用意するとともに、インスペクターから移動のオン・オフを切り替えられるようにすることで
別々のオブジェクトを作成するのではなく、スクリプトによって花輪の役割を変更するロジックにします。


FlowerCircle ゲームオブジェクト インスペクター画像



 それに加えて、花輪を獲得した際のSEも演出として取り入れます。
SE再生のタイミングは、花輪をくぐったとき、あるいは獲得した際に表示されるエフェクトに合わせてのいずれか、あるいは両方になると思います。

 どのタイミングがよいのかを考えていただき、そのイメージにあったオーディオファイルを用意して、SEを再生するようにします。


2.2.オーディオファイルをUnityへインポートする


 Googleの検索で「SE ゲーム 無料」と検索すると、色々な無料サイトからダウンロードが可能です。
「エフェクト 効果音」などで検索すると見つけやすいかもしれません。音源のオーディオファイルは mp 3か wave にて保存してください。
ファイルの名前を splash など、わかりやすいものに変更しておきましょう。

 ダウンロードしたオーディオファイルを SE フォルダにラッグアンドドロップします。
これでオーディオファイルがインポートされます。名前をわかりやすいものに変更しておきます。

 ドラッグアンドドロップしてもインポートされない場合には、オーディオファイルが圧縮されたままになっている可能性があります。
解答してから、再度ドラッグアンドドロップしてください。


フォルダ



 今回は花輪をくぐった際に1回だけSEを再生するようにするため、用意しているオーディオファイルは1つです。


3.FlowerCircle スクリプトを修正する


 宣言フィールドには新しく4つの変数を追加しています。処理の内容を確認し、どの部分で利用しているのかを読み解いてみてください。

 isMoveing 変数が移動を行う花輪にするのかを設定する部分になります。こちらのチェックがオン(true)の場合には、Start メソッド内に追加する処理によって
花輪が移動を行うように制御しています。スイッチがオフ(false)の場合には、移動を行わない花輪になります。インスペクターで設定できるようにしておくことで
設置した花輪ごとに、移動するのか、しないのかをそれぞれ個別に設定できるようにしています。


 各メソッド内にも処理を追加しています。

 Start メソッドには、移動する設定になっている場合のときのみ移動を制御する命令を追加しています。

 OnTriggerEnter メソッドには、このメソッドが判定を行う対象として、水面のコライダーについては判定しないように処理を追加しています。
現在は侵入判定に対して制限がないため、いずれかのコライダーが侵入した時点で判定が発生するようになっています。
そのため、水面に設置してゲームを実行するとその瞬間に OnTriggerEnter メソッドが呼び出されて花輪が消えてしまいます。
これを回避するために、このような制御処理を追加しています。
PlayGetEffect メソッドにはSE再生処理を追加しています。2か所追加していますが、最初に考えている部分に処理を追加してください。
オーディオファイルを2種類用意しており、両方に処理を追加するには、必要な変数も追加してください。


FlowerCircle.cs

 <= クリックすると開きます



 スクリプトの修正が終了したら、ヒエラルキーにある FlowerCircle ゲームオブジェクトのインスペクターを確認します。
新しく追加した effectPrefab 変数が追加されているか確認してください。


FlowerCircle ゲームオブジェクト インスペクター画像



4.FlowerCircle ゲームオブジェクトの FlowerCircle スクリプトのアサイン情報に、必要なコンポーネントがアタッチされているゲームオブジェクトをドラッグアンドドロップして登録する


 FlowerCircle ゲームオブジェクトを選択して、FlowerCircle スクリプトに追加されたアサイン情報を登録しましょう。

 flowerSE 変数には、SEとして再生したいオーディオファイルをドラッグアンドドロップして登録します。

 isMoveing 変数のスイッチにはチェックを入れて、花輪を移動する状態にしておいてください。

 duration 変数には初期値として 3 を、moveRange 変数には初期値として 5 を登録してください。
これがどのように働くかは、ゲームを実行しながら確認を行い、調整をしてください。


FlowerCircle ゲームオブジェクト アサイン後インスペクター画像




5.ゲームを実行して動作を確認する


 移動用のスイッチをいれた花輪のゲームオブジェクトが前後に移動するようになれば制御成功です。
移動時間や移動距離を変えて、どのように変化するかを確認してみましょう。


<実行動画(わかりやすいように水面をオフにしています)>
https://gyazo.com/955dcf85ff0bffbf5a75b68da91071ad


 以上でこの手順は完成です。


6.<発展>

 
 移動する方向を横方向(左右)に変えるにはどのような処理を記述すればよいでしょうか。
考えて実装してみてください。


48.ダイブの目標地点用に複数の花輪のプレファブを設置する

1.設計


 花輪の FlowerCircle ゲームオブジェクトをプレファブにします

 花輪のゲームオブジェクトを水面上に並ぶように、ゲーム画面内に配置していきましょう。
水面に並べることにより、ダイブを行うキャラのダイブの目標地点としての役割を持たせることが出来ます。


2.フォルダ役の Goals ゲームオブジェクトを作成する


 ヒエラルキー上の何もない部分で右クリックをしてメニューを開き、Create Empty を選択します。
新しい空のゲームオブジェクトが作成されますので、名前を Goals に変更します。

 このゲームオブジェクトをゴール地点用に配置する FlowerCircle ゲームオブジェクトを入れるためのフォルダとして利用し、管理を行います。


ヒエラルキー画像



Goals ゲームオブジェクト インスペクター画像



3.FlowerCircle ゲームオブジェクトを水面上に配置する


 好きな数の FlowerCircle ゲームオブジェクトのプレファブを Goals ゲームオブジェクト内に配置して自由に水面上に配置しましょう。
Position の Y 軸を 5 にすると水面付近になりますので、X 軸と Z 軸は自由に移動させてください。

 あまり並べ過ぎてもゲーム性が薄くなりますので、水面の大きさにもよりますが、3〜5個位が妥当かもしれません。
この辺りは、花輪を小さくするなど、色々な部分で調整が出来ますので、その辺りも考えてみましょう。


ヒエラルキー画像



Sceneビュー画像 /緻名紊砲覆襪茲Δ吠造戮



Sceneビュー画像◆/緻名紊砲覆襪茲Δ吠造戮



参考用



参考用



4.ゲームを実行して動作を確認する


 並べた花輪のゲームオブジェクトのうち、移動する設定の花輪が移動し、それ以外の花輪はそのままになっているか確認します。


<実行動画(わかりやすいように水面をオフにしています)>
https://gyazo.com/2bb64952a020c408b7db8e7d0063fc7a


 以上でこの手順は終了です。

 => 次は 手順28 ーステージ作成ー です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます