Unityに関連する記事です

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

 手順3では、ゲームのベース部分の作成を行います。
先ほどの手順でUnityにインポートしたアセットを利用してステージを作成していきます。

手順3 −ステージの作成−
 4.アセットを使ってステージを作成する



新しく学習する内容


 ・設計に沿った製作作業
 ・オブジェクトの親子関係


4.アセットを使ってステージを作成する

1.設計


 アセットを組み合わせてステージを作成します。自由に配置を行いながら、SceneビューでのUnityの操作に慣れるようにしていきましょう。
地面用と水面用のゲームオブジェクトを配置して、水底と湖に見えるようにします。これらは共通素材を用意しますが、それ以外はすべて自由に作成します。


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


 最初に、ステージ用のゲームオブジェクトをまとめて管理するためのフォルダ役のゲームオブジェクトを作成します。

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


ヒエラルキー画像



 この Stage ゲームオブジェクトの子オブジェクトとして、ステージ用の各ゲームオブジェクトを配置します。


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



 

3.Bottom ゲームオブジェクトを作成する


 Stage ゲームオブジェクトを選択したままで右クリックをしてメニューを表示し、3D => Plane を選択してください。
平らな形状の3Dゲームオブジェクトが作成されますので、名前を Bottom にしてください。


ヒエラルキー画像



 このゲームオブジェクトが湖の底の地面役になります。


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



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



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


 Bottom ゲームオブジェクトの設定を行います。4点変更箇所がありますので、順番に設定を行います。

 最初にサイズを変更します。ヒエラルキーにある Bottom ゲームオブジェクトを選択して、インスペクターを確認してください。
一番上に Transform コンポーネントがアタッチされていますので、Scale を (1, 1, 1) => (0.5, 1, 0.5) に変更して小さくしてください


インスペクター Transform コンポーネント画像



Sceneビュー画像




 2つ目は、インスペクターの一番下にアタッチされている Mesh Collider コンポーネントを削除します。
削除する方法は、Mesh Collider コンポーネントの名前の右側にある … アイコンをクリックして、Remove Component を選択してください


<手順動画 コンポーネントを削除する方法>
https://gyazo.com/3a6c9a7f88b52eb2df4bddddcc5853f9



 3つ目は、新しくコンポーネントを1つ追加します。

 Bottom ゲームオブジェクトをヒエラルキーで選択した状態で、インスペクターの一番下にある Add Component ボタンをクリックしてください。
このボタンから任意のコンポーネントを追加することが出来ます。どのコンポーネントを追加するか選択するためのウインドウが開きます。

 検索窓に Box と入力し、Box Collider を選択して追加してください。
インスペクターの一番下に Box Collider コンポーネントが追加されれば成功です。


<手順動画 コンポーネントを追加する方法>
https://gyazo.com/be8dbfdf700c4d15c6231cf3dc8e81f5


 Box Collider のインスペクターの設定に下記のように変更してください。


Bottom ゲームオブジェクト Box Collider コンポーネントを追加したインスペクター画像



 Sceneビューでも確認をしておきます。
白いオブジェクトのため、コライダーのサイズがわかりにくいので、そういった場合には
Renderer機能(描画)を一時的にオン/オフして確認をしましょう。


<手順動画 MeshRendererをオン/オフしてサイズを確認>
https://gyazo.com/6b4741fc9adeea7b89475a47ffa50570


 Mesh Collider コンポーネントも Box Collider コンポーネントも同じコライダーなのですが
Mesh Collider コンポーネントによるコライダーは Box Collider コンポーネントよりも精密な形状を計算して構築します。
そのため、処理が重くなります。

 今回は複雑な形状をしていませんので、四角い形状の Box Collider コンポーネントをアタッチして代用しておきます



 最後に4つ目の変更です。現在ゲームオブジェクトは真っ白です。こちらに色をつけます。

完成画像



 最初にマテリアルを保存するためのフォルダを作成します。
Project 内で右クリックを行いメニューを表示して、Create => Folder を選択してください
作成されたフォルダの名前を Materials に変更してください。


フォルダ画像



 Materials フォルダの中で再度右クリックをしてメニューを表示して、Create => Material を選択してください
名前は Ground にします。このマテリアルに水底の地面用の色を設定します。


Ground マテリアル



 Ground マテリアルを選択してインスペクターを確認します。
Shader のプルダウンメニューを選択して、Mobile/Diffuse に設定します
この設定にすると、Texture(いわゆる2D)画像をマテリアルとして設定出来るようになります。


<手順動画 Shader の設定を変更する>
https://gyazo.com/b1000649a522e1d246f7b905446c799c


 インポートした Standard Asset 内に地面用のTexture 画像が含まれていますので、そちらを利用します。

 Select ボタンを押して Texture 一覧のウインドウを開き、検索窓に grass と打ち込んでください。
地面用の草地のTextureがいくつか表示されますので、1つを選択して設定しましょう。


<手順動画 マテリアルにTextureを設定する>
https://gyazo.com/86529f56624c8d5d7f1a57f6fba199b0


Ground マテリアル インスペクター画像



 この Ground マテリアルを Mesh Renderer コンポーネントのマテリアルに設定を行います。
あるいは、Sceneビューにある Bottom ゲームオブジェクトにドラッグアンドドロップして設定します。


<手順動画 ゲームオブジェクトにマテリアルを設定する>
https://gyazo.com/24fd00a7381a1fb6b6f5161554dc8877


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

 一度、セーブを行いましょう。ctrl + S キーでセーブが行えます
特に記載がなくても、こまめにセーブを行うことを心がけてください。


5.水面用のゲームオブジェクトを作成する


 次のフォルダから、水面のゲームオブジェクトを選択してください。
Assets/Standard Assets/Environment/Water/Water/Prefabs/WaterProDaytime.prefab
 

フォルダ



 WaterProDaytime ゲームオブジェクトをヒエラルキーの Stage ゲームオブジェクトの子オブジェクトとしてドラッグアンドドロップしてください。


ヒエラルキー画像



 Sceneビューに水面のゲームオブジェクトが作成されますので、ステージの中央、湖の部分に移動してください。
設置すると自動的に水面がアニメーションします。

 インスペクターの位置を参考にして設置してください。


Sceneビュー画像 



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



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



<設計に沿った製作作業>


 さてここで、今後の設計に合わせて、前もって事前準備を行っておきます。

 WaterProDaytime ゲームオブジェクトを選択して、インスペクターの一番下にある Add Component ボタンを押してください。
検索ウインドウから Box Collider コンポーネントを選択して、追加してください。

 追加された Box Collider コンポーネント内にある、IsTrigger のチェックを入れておきます

 コライダーの大きさは、湖の大きさに合わせて調整を行います。水面より少し下の当たりからコライダーが始めるように設定します。


<参考>
Sceneビュー画像



Sceneビュー画像



インスペクター画像



 なぜまだ先に利用するこの Box Collider コンポーネントを追加してコライダーの調整などの設定を行っているかですが
この次の手順において、この水面の周囲には木や岩などのゲームオブジェクトが多く設置されます。

 そうなった場合、コライダーの大きさを調整する際に、非常に見えにくくて調整が難しくなってしまいます。
またステージのデザインが人によって変わるため、それに準じてコライダーのサイズを変更するのも大変です。
見やすくするためには、周囲に配置したゲームオブジェクトを一時的に非表示にするなどの操作も必要になります。


<ステージを作ってからコライダーの操作を行うと…>



 今回のゲームでは、この水面用のゲームオブジェクトに Box Collider コンポーネントを追加することは設計上、確定している情報です。
しっかりと先のことを考えて設計を行っておくことで、このように作業をおこないやすい状態で進めることが出来ます。

 余分な手間や、やりにくい中での操作を行わなくて済みますので、ゲーム全体の設計作業がいかに重要な役割を持っていることがわかっていただけると思います。


 ここまでで共通の製作手順は完成です。この水面の周囲を岩や木などのオブジェクトで囲んで湖のような形状にしていきます。


6.自由にゲームオブジェクトを設置してステージを作成する


 Stage ゲームオブジェクトの子オブジェクトとして、ステージ用のゲームオブジェクトを複数設置し、ゲームのステージを作成します。
水面のゲームオブジェクトを中心とし、その周囲を岩や木のゲームオブジェクトなどで囲んでください。

 ステージのオブジェクトにはインポートしたアセットを利用しましょう。

 Assets/AlignedGames/Polygonal Foliage Asset Package/Art/Models

 こちらの Models フォルダ内には、フォルダ分けされて木や岩などのオブジェクトが用意されています。これらを自由に使いましょう。
同じ名前のオブジェクトが2つ並んで居ますが、選択した際にインスペクターに Open Prefab と表示されるものがプレファブのゲームオブジェクトです。


<プレファブの見分け方>



 インポートしたアセットはプレファブのゲームオブジェクトになっていますので、Sceneビューにドラッグアンドドロップして配置すればそのまま配置できますが
それだと Stage ゲームオブジェクトの子オブジェクトになりませんので、その方法で作成していく場合には、必ず Stage ゲームオブジェクトの子オブジェクトに変更しておいてください。


参考 ヒエラルキー



参考 Sceneビュー



7.Stage ゲームオブジェクトを操作して、ステージ全体のサイズを一括で変更する(オブジェクトの親子関係を利用する)


 無事にステージが完成したら、ステージのサイズを調整します。

 ステージ用のゲームオブジェクトをすべて Stage ゲームオブジェクトの子オブジェクトとして作成していただいています。
これは単にフォルダとしての役割だけではなく、この親子関係を利用した操作を行うためにも一役買っています。

 Stage ゲームオブジェクトを選択してインスペクターの Transform コンポーネントを確認します。
Scale の値を (1, 1, 1) => (10, 10, 10) に変更してください


<手順動画 親子関係の利用>
https://gyazo.com/4a604bca1cec33be83dc61012b8a5436


 Stage ゲームオブジェクトの Scale を変更しただけなのに、その子オブジェクトたちである、ステージのゲームオブジェクトもすべて均等にサイズが変更されます

 これはオブジェクトの親子関係を利用した手法の1つです。子オブジェクトの Scale を1つずつ変更する必要なく、
ステージ用のゲームオブジェクトのサイズを一括で変更することができます。
また、ある子オブジェクトだけ変更したい場合には、その子オブジェクトだけを変更すれば設定が可能です。

 Unityはこの親子関係によって利用できる便利な処理が多くなります。ですが時にはこの親子関係によって不具合を生じることもあります。
ゲームオブジェクトをヒエラルキーに設置する際には、親子関係を構築しておいた方が便利なのか、あるいは別の方がよいのか
そういったことも含めてヒエラルキーを見るようにしていただけるといいと思います。


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

 => 次は 手順4 −キャラの作成− です。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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