Unityに関連する記事です

 ここからの手順では2回にわけて、ゴール地点の作成ゴールした際のゲームクリアの判定について実装していきます。
ここではゴール地点の作成を行います。


<実装画像 Gameビュー>



<動画 Sceneビュー>
https://gyazo.com/67e45fb124c4ec7020bd33fb4e72d68f


手順9 −ゴールの作成−

13.ゴール表示用のアセットをインポートする
14.ゴール地点を作成する


新しく学習する内容


 ・ゲームオブジェクトを配置する際の便利なショートカットキー機能


13.ゴール表示用のアセットをインポートする

1.設計


 ゴール地点を遠くからでもわかるようにするために、ゴール表示用のアセットを利用して表現します。
またゴール地点内にはフェンスを配置して、それ以上、遊べるコースがないことを伝えるようにします。


完成時のヒエラルキー画像



2.アセットをインポートする


 ゴール表示用のゲームオブジェクトを考えます。
今回は無料のアセットに旗のゲームオブジェクトがありますので、そちらをインポートして利用します。
旗であれば遠くからでもゴール地点が近いことが判別できます。

 もちろん、別のゲームオブジェクトであってもいいですし、自作していただいても構いません。

 Cloth animation based Flag



 アセットストアへ移動して、上記のアセットの名前で検索をしてください。あるいは Flag Free などで検索をしてください。
対象のアセットが見つかります。

Cloth animation based Flag



 このアセットをクリックするとアセットの詳細が画面に表示されますので、 画面の右側にある Add to My Assets という青いボタンを押します。




 Unityのアカウントでのサインインを求められますので、自分のアカウントを利用してストアへサインインしてください。
 
 再度ページが読み込まれて、先ほどのボタンのメッセージが変わり、 Open in Unity となりますので、またこの青いボタンを押します。
あるいは、画面の上部にウインドウが表示されて、その中に Open in Unity のボタンがありますので押します。




 自動的にUnityのエディター画面に遷移します。アセットストアのサイトは閉じてしまって問題ありません。



 エディターのPackageManagerビューが開いて、対象のアセットが表示されますので、右下にある Download ボタンを押します。

PackageManagerビュー Download



 Download が終了すると左隣にある Import というボタンが押せるようになりますので、そちらを押します。

PackageManagerビュー◆Import



 インポートするアセットの一覧がポップアップウインドウとして表示されますので、そのまま右下にある Import ボタンを押します。


Import確認のポップアップ



 待機するようにプログレス表示が出て、しばらくするとアセットのインポートが終了します。


 Project内を確認しましょう。flag という新しいフォルダが追加されていれば無事にインポートされています。


flag



 これでアセットのインポートは完了です。




14.ゴール地点を作成する

1.設計


 インポートした Flag のゲームオブジェクトとフェンスのゲームオブジェクトとを組み合わせてゴール地点を作成します。
また見えないコライダーを用意して、次の手順でスクリプトからキャラの侵入を判定できるようにもします。


2.GoalSet ゲームオブジェクトを作成する


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


ヒエラルキー画像



GoalSet ゲームオブジェクト
)


 このゲームオブジェクトをゴール地点を構成するゲームオブジェクト群のフォルダ役として利用します。


 
 次の作業が楽になるように、Transform コンポーネントの Positionを (0, -2.6, 11) に変更してください。
 
 また Rotation の X を 15 に変更してください。斜面のゲームオブジェクトの回転角度に合わせます。

 このように事前に設定しておくことで、この後に配置するゲームオブジェクト群を操作しやすい位置で操作することができます。


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



 以上でこのゲームオブジェクトの設定は完了です。


3.GoalSet ゲームオブジェクトの子オブジェクトとして flag_med ゲームオブジェクトを作成する


 インポートしたアセットを利用してフラッグ(旗)のゲームオブジェクトを配置します。以下の場所にゲームオブジェクトがあります

パス
Assets/flag/flag_med.prefab

フォルダ画像



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



 ドラッグアンドドロップして、GoalSet ゲームオブジェクトの子オブジェクトとして作成してください。


ヒエラルキー画像



 設置すると以下のような画面になります。


Sceneビュー画像



Gameビュー画像



 このフラッグのゲームオブジェクトは2つ作成するのですが、まずは設置したゲームオブジェクトの設定を行います。
その後、それを複製して2つ目のフラッグのゲームオブジェクトとします。


4.flag_med ゲームオブジェクトの設定を行う


 画面の向かって右側にフラッグが来るように配置を行います。
サイズと問題ありませんので、位置情報と回転情報の設定を行います。

 Sceneビューや Gameビューを確認しながら、画面の右側、斜面に設置するようにフラッグを移動してください。 
下記のインスペクター画像やGameビュー画像なども参考に利用してください。

 なお、ここでは配置用の座標情報を記載していますが、実際に自分で Scene 内にゲームオブジェクトを配置してワールドを作成する場合には、
ショートカットキーを活用することで、ゲームオブジェクト同士の表面にぴたっと張り付くように上手く配置することが出来ます。
覚えておくと作業効率が上がり、便利です。


<参考サイト>
イシゲーのUNITY保管庫 様
【UnityC#講座】Sceneビューのショートカットやお役立ち機能





 移動する際にフェンスなどが邪魔で見えにくい場合には、RightFences ゲームオブジェクトLeftFences ゲームオブジェクト非表示にすると見えやすくなります。

 回転情報ですが、Rotation の Y 軸を操作することでフラッグが見えるようになります。ここでは 90 に設定しています。


インスペクター画像



Sceneビュー画像



Sceneビュー画像



Gameビュー画像



 以上で設定は完了です。


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


 flag_med ゲームオブジェクトには Animator コンポーネントがアタッチされており、
ゲームの実行にあわせてフラッグがはためくアニメーション処理が実行される設定になっています。

 ゲームを実行して確認してみましょう。


<実行動画>
https://gyazo.com/43db01972ebdc39c3503d04a037a0895


 おかしい部分があることに気づきましたでしょうか。

 フラッグの土台部分(ポールと台)が斜面を滑っていってしまうため、旗だけが取り残されています。
原因がどこにあるのかを調べてみましょう。


6.flag_med ゲームオブジェクトの子オブジェクトの設定を行う


 flag_med ゲームオブジェクトには3つの子オブジェクトがあり、それらの役割によってフラッグとしてのゲームオブジェクトが構成されています。

 このうち、basest ゲームオブジェクト(土台役)と、polest ゲームオブジェクト(ポール役)のインスペクターを確認してください。
Rigidbody コンポーネントがアタッチされていると思います。このコンポーネントによって物理演算が処理されるため、斜面を滑ってしまっています。


basest ゲームオブジェクト



polest ゲームオブジェクト



 改善策としましては、まず最初に Use Gravity のチェックを外して、重力の影響を受けないようにします。
 続いて、キャラにも設定した FreezeRotation のすべての軸にチェックを入れて回転情報も影響を受けないようにします。


basest ゲームオブジェクト



polest ゲームオブジェクト



 設定が終了したら、もう一度ゲームを実行して確認をしてみます。


<実行動画>
https://gyazo.com/3ea396c5dd328d8bdae45ac924091c02


 無事に修正が完了したら、このゲームオブジェクトを複製していきます。

 なお、Rigidbody コンポーネント自体を Remove しない理由についてですが、
basest ゲームオブジェクトにアタッチされている Fixed Joint コンポーネントを利用するために必要なコンポーネントであるためです。

 Fixed Joint コンポーネントは物理演算を用いて、オブジェクトの動きを別のオブジェクトに依存することで一緒に制御を行える機能です。


参考サイト
Unity公式マニュアル
Fixed Joint
https://docs.unity3d.com/ja/current/Manual/class-F...


7.flag_med ゲームオブジェクトの複製を行い、設定する


 flag_med ゲームオブジェクトの上で右クリックをしてメニューを開き、Duplicate を選択して複製を行います。
ヒエラルキーに flag_med(1) ゲームオブジェクトが作成されます。


ヒエラルキー画像



 複製元のゲームオブジェクトの位置に複製されていますので、位置を変更しましょう。
また、フラッグが反対側を向くように回転角度を調整してください。


flag_med(1) ゲームオブジェクト インスペクター画像



Sceneビュー画像



Sceneビュー画像



Gameビュー画像



 以上でゴール地点の目印用のゲームオブジェクトの作成は完了です。


8.GoalSet ゲームオブジェクトの子オブジェクトとして Fences ゲームオブジェクトを作成する


 GoalSet ゲームオブジェクトの上で右クリックをしてメニューを開き、Create Empty を選択します。
新規の空のゲームオブジェクトが作成されますので、名前を Fences に変更します。


ヒエラルキー画像



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



 このゲームオブジェクトは、フェンス用のゲームオブジェクト群をまとめるフォルダとしての役割を持ちます。

 以上でこのゲームオブジェクトは完成です。続いては、このゲームオブジェクトの子オブジェクトとしてフェンスを設置します。


9.Fences ゲームオブジェクトの子オブジェクトとして fence_double ゲームオブジェクトを作成する


 インポートしたアセットを利用してフェンスのゲームオブジェクトを配置します。以下の場所にゲームオブジェクトがあります

パス
Assets/Snowed Fence/FBX/fence_double.FBX

フォルダ画像



 ドラッグアンドドロップして、GoalSet ゲームオブジェクトの子オブジェクトとして作成してください。


ヒエラルキー画像



 設置すると以下のような画面になります。


インスペクター画像



Sceneビュー画像



Gameビュー画像



 フェンス用のゲームオブジェクトは複数作成するのですが、まずは設置したゲームオブジェクトの設定を行います。
その後、それを複製して2つ目以降のフェンス用のゲームオブジェクトとします。


10.fence_double ゲームオブジェクトの設定を行う


 まず最初に、インスペクターの一番下にある Add Component ボタンを押して、BoxCollider コンポーネントを追加してください。
自動的にゲームオブジェクトの大きさに合わせてコライダーが設定されます。念のため、Sceneビューにて確認をしてください。


BoxCollider コンポーネントのサイズを確認




 次に、画面に向かって左側からフェンスを水平方向に並べるイメージで配置を行います。
サイズと回転情報はそのままで問題ありませんので、位置情報の設定を行います。

 Sceneビューや Gameビューを確認しながら、画面の左側、斜面に設置するようにフェンスを移動してください。 
下記のインスペクター画像やGameビュー画像なども参考に利用してください。


インスペクター画像



Sceneビュー画像



Sceneビュー画像



Gameビュー画像



 以上で設定は完了です。次はこのゲームオブジェクトを複製していきます。



11.fence_double ゲームオブジェクトを複製して位置を調整する


 fence_double ゲームオブジェクトの上で右クリックをしてメニューを開き、Duplicate を選択して複製します。
合計で6個のフェンスを用意してください。


ヒエラルキー画像



 1つ順番にずらして水平に並べてください。


Sceneビュー画像



Gameビュー画像



 参考用に各フェンスの Transform コンポーネントの画像を掲載します。
水平方向に並んでいればこの値にならなくても問題ありません。

















 以上で設定は完了です。


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


 ゲームオブジェクトの設置が完了しましたので、ゲームを実行してフェンスに止まって進めなくなるかを確認します。


<実行動画>
https://gyazo.com/649e71e0a2771535c9f2b187dc2a6eb4

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

 => 次は 手順10 −ゴール判定とキャラの制御を実装− です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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