Unityに関連する記事です

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

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

手順3 −フロアのベース部分の作成−
 4.アセットを使ってステージ用のフロアのベース部分を作成する



新しく学習する内容


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


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

1.設計


 アセットを組み合わせてステージ用に利用するフロアを作成します。
自由に配置を行いながら、SceneビューでのUnityの操作に慣れるようにしていきましょう。

 フロア内には斜面用のゲームオブジェクトを配置して、坂道に見えるようにします。
また坂道の左右端には、プレイヤーがはみ出さないための壁役のフェンスを設置します。

 これらのベース部分には共通素材を用意しますが、それ以外はすべて自由に作成します。


Gameビュー画像 完成図



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


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

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


ヒエラルキー画像



 この Floor ゲームオブジェクトの子オブジェクトとして、フロア用の各ゲームオブジェクトを配置します。


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



 

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


 Floor ゲームオブジェクトを選択したままで右クリックをしてメニューを表示し、3D => Cube を選択してください。
四角い形状の3Dゲームオブジェクトが作成されますので、名前を Slope に変更してください。


ヒエラルキー画像



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


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



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



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


 Slope ゲームオブジェクトの設定を行います。位置・サイズ・マテリアルの変更がありますので、順番に設定を行います。



 最初に位置とサイズを変更します。ヒエラルキーにある Slope ゲームオブジェクトを選択して、インスペクターを確認してください。
一番上に Transform コンポーネントがアタッチされていますので、Position を (0, 0, 0) => (0, -8, 15) に変更してください。
また、Rotatin を (0, 0, 0) => (15, 0, 0)に変更し、Scale を (1, 1, 1) => (25, 1, 45) に変更して大きくしてください。

 Position を変更する理由は、今後作成する予定のプレイヤーであるペンギンの座標位置を 0 とし、その地点をスタート地点にしたいためです。

 Unity のワールド座標では、0 の位置はオブジェクトの端ではなくて中央の位置になります。
そのため、Slope のゲームオブジェクトは中央ではなくずらして配置することで、プレイヤーを中央に配置するようにします。
また、カメラの位置を変更することなく、Gameビューにもちょうどよく見えるようになります。

 Rotation を変更しているのは斜面としての傾きを与えるためです。


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



Sceneビュー画像



Sceneビュー画像



Gameビュー画像




 次にマテリアルの変更を行います。現在 Slope ゲームオブジェクトは真っ白です。こちらに色をつけます。
ゲームオブジェクトの色を変更にするには、Mesh Renderer コンポーネントの中にある Material(マテリアル)で設定を行います

 インポートしたアセットに雪用のマテリアルが含まれていますので、そちらをゲームオブジェクトのマテリアルに適用します。
Assets/9t5 PBR Textures Pack Freebies/Textures/Snow 1/Snow 1.mat

フォルダ画像



 こちらの Snow 1 マテリアルをドラッグアンドドロップして、Slope ゲームオブジェクトの Material にアサインして変更します


<手順動画 マテリアルの変更>
https://gyazo.com/bd92496b46175053699a9edffc0b5230

 
 GameビューとSceneビューにマテリアルの情報が反映されて、Snow 1 のマテリアルに変更になりました。
ですがこのままですと、マテリアルに利用している画像が引き伸ばされてた状態になってしまっているため、こちらの設定を変更します。

Gameビュー画像




 Snow 1 マテリアルを選択してインスペクターを確認します。
 Main Maps の項目内に Tilling という項目がありますので、こちらの値を X = 50, Y = 50 に変更します


<手順動画 マテリアルの情報を変更する>
https://gyazo.com/1d4d85ccccebf0a5854e9ab3be4ceba8


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

 
 他にもマテリアルの設定によって変更することができますので、自分の好みに調整をしてみてください。


マテリアル設定後のGameビュー画像




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

 念のため、BoxCollider のサイズを確認しておきます。ゲームオブジェクトのサイズを変更すると一緒に変更になりますので
BoxCollider コンポーネントの Edit Collider ボタンを押して、ゲームオブジェクトのサイズと同じサイズのコライダーになっているか、確認します。
Size が (1, 1, 1) になっていれば問題ありません。


<手順動画 Sceneビューでコライダーの大きさの確認>
https://gyazo.com/a37da8b4ca85a07e1609e4c44b055c8b


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


5.RightFences ゲームオブジェクトを作成する


 Floor ゲームオブジェクトを選択したままで右クリックをしてメニューを表示し、Create Empty を選択してください。
新しい空のゲームオブジェクトが作成されますので、名前を RightFences に変更してください。


ヒエラルキー画像



 このゲームオブジェクトは、フロアの右側に設置するフェンス群をまとめるフォルダ役になります。

 位置情報を下記のインスペクター画像のように変更してください。
 

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


 続いて、この RightFences ゲームオブジェクトの子オブジェクトとして、フェンスのゲームオブジェクトを作成します。


6.RightFences ゲームオブジェクトの子オブジェクトとして fence_single ゲームオブジェクトを作成する


 インポートしたアセットから、フェンスのゲームオブジェクトを利用します。

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

フォルダ画像



 こちらの fence_single ゲームオブジェクトを選択して Sceneビューに作成します。
設置する際には、RightFences ゲームオブジェクトの子オブジェクトとしてドラッグアンドドロップして設置してください。


ヒエラルキー画像



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



7.RightFences ゲームオブジェクトの回転情報の設定を行う


 SceneビューとGameビューを確認するとわかりますが、フェンスの向きが正面を向いて配置されていると思います。


Sceneビュー画像



Gameビュー画像



 このゲームオブジェクトが障害物であればこの向きでよいのですが、今回はプレイヤーがフロアから飛び出さないためのフェンスになりますので
向きを修正しないとフェンスとしての役割を果たせません。

 このとき、フェンスのゲームオブジェクトの回転情報を修正するのではなく、親オブジェクトである RightFences ゲームオブジェクトの回転情報を修正するようにします。
子オブジェクトは親オブジェクトの回転情報を利用しますので、親オブジェクトで設定を変更しておくことにより、複数の子オブジェクトが増えた場合の変更が楽になります。

 RightFences ゲームオブジェクトの Rotation を (0, 0, 0) => (0, 90, 15) に変更してください。


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



SceneビューとGameビュー画像


 
 これで向きが直りました。


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


 3点変更点がありますので、順番に設定を行います。



 まず最初に、プレファブの状態を解除します。
fence_single ゲームオブジェクトをヒエラルキーで選択して右クリックしてメニューを表示し、Prefab => Unpack Completely を選択してください。
プレファブ状態が解除されて通常のゲームオブジェクトに戻ります。ヒエラルキーのfence_single ゲームオブジェクトの文字が黒くなっていれば問題ありません。

ヒエラルキー画像




 続いて、fence_single ゲームオブジェクトを選択してインスペクターより、Animator コンポーネントを選択します。
こちらは今回利用しませんので、Removeしてください。Animator コンポーネントの右上にある … ボタンを押すとメニューが開きますので
Remove Component を選択するとインスペクターより Animator コンポーネントが削除されます。


Remove 後のインスペクター画像




 最後に、BoxCollider コンポーネントを追加して、フェンスとプレイヤーが接触するようにします。
このコンポーネントがないと、ゲームオブジェクト同士には接触判定が発生しないため、フェンスを通過してしまいます。

 fence_single ゲームオブジェクトを選択してインスペクターの一番下にある Add Component ボタンを押して、Box Collider を探して選択してください。
インスペクターの一番下に BoxCollider コンポーネントが追加されます。

 自動的にゲームオブジェクトの形状に合わせた四角い形状のコライダーが追加されていますので、Sceneビューでも確認しておきます。


BoxCollider の Sceneビュー画像



BoxCollider 追加後のインスペクター画像(細かい数字にはこだわる必要はありません。Sceneビューでしっかりとゲームオブジェクトの形状になっていれば問題ありません)



 以上でフェンス用のゲームオブジェクトの設定は完了です。次は、このゲームオブジェクトを複製して、フェンスを並べます。


9.fence_single ゲームオブジェクトを複製する


 fence_single ゲームオブジェクトをヒエラルキーで選択して右クリックをしてメニューを開き、Duplicate を選択します。
fence_single ゲームオブジェクトの複製である fence_single(1) ゲームオブジェクトが作成されます。名前はそのままで構いません。


ヒエラルキー画像



 位置を Position X だけ -2 にしてください。


<手順動画 位置調整>
https://gyazo.com/fe9b0de8befe9d5a5f23bf73c7c46d0b


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


 この手順を繰り返して、fence_single ゲームオブジェクトの複製を 22 個作成します。
複製したゲームオブジェクトは、X 軸のみ、-2 ずつ位置をずらしていってください。

fence_single(2)  ゲームオブジェクト  Position (-4, 0, 0)
fence_single(3)  ゲームオブジェクト  Position (-6, 0, 0)
   :
fence_single(21) ゲームオブジェクト  Position (-42, 0, 0)
fence_single(22) ゲームオブジェクト  Position (-44, 0, 0)


ヒエラルキー画像



Sceneビュー画像


 以上でフェンスが並びました。最後に、位置を調整します。


10.親子関係を利用してフェンスの位置をまとめて調整する


 フェンス用のゲームオブジェクトを並べましたので、親オブジェクトである RightFences ゲームオブジェクトを移動させて位置を調整します
下記のインスペクター画像を参考にして位置を調整してください。

 各フェンスのゲームオブジェクトは RightFences ゲームオブジェクトの子オブジェクトであるため、
親オブジェクトが移動すると子オブジェクトは追従して移動しますので、まとめて移動をさせることが出来ます


<手順動画 親子関係>
https://gyazo.com/c1fdd662cc29aa9bc4067277c3f0ed6b


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



Sceneビュー画像



Gameビュー画像



 以上で右側のフェンスの作成は完了です。これを複製して左側のフェンスも作成します。


11.RightFences ゲームオブジェクトを複製し、LeftFences ゲームオブジェクトを作成して位置を調整する


 RightFences ゲームオブジェクトを選択して右クリックをしてメニューを開き、Duplicate を選択して複製します。
RightFences(1) ゲームオブジェクトが作成されますので、名前を LeftFences に変更してください。

 複製されて作成された LeftFences ゲームオブジェクトは複製元である RightFences ゲームオブジェクトの位置に作成されています。
下記のインスペクター画像を参考に、Sceneビューで位置を調整して、左側に移動させてください。
Unityのワールド座標は中心が 0 ですので、相対位置になるように Position X を -10 にすればちょうど相対的な位置になります。

こちらも親子関係を利用し、LeftFences ゲームオブジェクトを移動させれば、子オブジェクトは一括で移動します。

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



Sceneビュー画像



Gameビュー画像



 以上で、フロアのゲームオブジェクトのうち、ベースとなる、斜面とフェンスのゲームオブジェクトの作成は終了です。



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

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

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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