スロープのレベルデザイン

#サンプルデータのインポート#

![スクリーンショット (101).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/cad1a848-7209-4aac-f3da-049e6b17bd42.png)
1：Fserverから「1_Slope_2020.zip」をPCにコピーしてダブルクリックし、エクスプローラーが表示されたら「展開」をクリックする(下記からDLしてもいい）。
https://drive.google.com/file/d/18MJ51aD3ghoseNYDTEnNdhwCW6wcwbps/view?usp=sharing

![スクリーンショット (102).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/8197c7e9-92bd-a882-ae4c-fe7c522b4560.png)
2：続いて「すべて展開」をクリックする。

![スクリーンショット (103).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/820cf141-a529-f1c6-216d-dceb39758f01.png)
3：Unity Hubを起動する。

![スクリーンショット (104).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a25214b2-68e1-73d2-f7a0-a83f680eab0f.png)
5：Unity Hubで「リストに追加」をクリックし、展開して生成した「1_Slope_2020」フォルダを選択する。この時、フォルダを開いて図のように「Assets」「Project Settings」フォルダが表示されたら、「フォルダーの選択」をクリックする。それ以外の階層では読み込めないので注意。

![スクリーンショット (105-2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/4d52ea60-a162-26e4-73a2-25e14501211a.png)
6：Unityのバージョンが「2019.4.1f1」になっているか確認する。もし違っていたら、メニューから正しいバージョンを選ぶ。

![スクリーンショット (105).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/0594324a-6ba2-7f96-19ff-2f6f53961372.png)
7：プロジェクト欄に「1_Slope_2020」が表示されたら、プロジェクトをクリックする。

![スクリーンショット (112).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/752d6941-eafa-c174-6c85-be7e6308840c.png)
8：データが読み込まれて、Unityエディタが起動する。

<b>ワンポイントテクニック</b>

![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/890ba530-ef34-d6a9-356b-758877dd25b7.png)
※不要なプロジェクトは「･･･」（縦3つ）メニューを開き、「リストから削除」を選択すれば削除できる。なお、このときデータはストレージから削除されずに残る。

#シーンファイルの実行から作業準備まで#

![スクリーンショット (113).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7344de66-f127-6c0a-c14d-4f2b9650bca0.png)
9：プロジェクトエリアから「Tamakorogashi」フォルダを開く。

![スクリーンショット (114).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/d63e45ad-a875-895b-27d4-8b60369a42e1.png)
10：続いて「Scene」フォルダを開く。

![スクリーンショット (115).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7a8b71d1-ed1c-8140-e62d-8ce230b32b76.png)
11：続いて「Slope」アイコンをクリックする。このUnityロゴマークのアイコンをしたファイルがシーンファイルだ。

![スクリーンショット (129).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/9f8202b9-7f89-60c7-eb43-49313f4b2bbc.png)
12：シーンビューにステージが表示され、Hierarchyにアセットがリスト化される。Hierarchyの一番上のオブジェクトが「Slope」になっている点に注意しよう。その後、再生ボタンをクリックすると、デモが始まる。

![スクリーンショット (117).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/b7695a83-73ca-3636-873b-84b90151e5e6.png)
13：デモはボールが落下してバウンドし、ゴールに到達するとファンファーレが鳴るというものだ。デモ中に「RETURN」キーを押すとリスタートする。

![スクリーンショット (120).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/e061b03a-7eba-2727-9d3f-af692e8b319f.png)
14：ある程度デモの内容を確認したら、再び再生ボタンをクリックしてプログラムを終了させよう。その後、「File」→「Save as」を選択する。

![スクリーンショット (124).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/ae2f8aec-0960-6852-a2ca-bb8c35861263.png)
15：新たに「Slope_Master」と入力して保存しよう。

![スクリーンショット (125).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a3c0773f-ff35-a026-11e0-24551f522b6a.png)
16：プロジェクトエリアのAssets直下に、新たにシーンファイル「Slope_Master」が作成される。

![スクリーンショット (127).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/adc94f17-9ef2-4648-b8d9-62f81e739df4.png)
17：「Slope_Master」をプロジェクトエリアで「Assets」→「Tamakorogashi」フォルダにドラッグ＆ドロップで移動させる。

![スクリーンショット (128).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/d3112db2-9902-8fae-df77-b93af50f62af.png)
18：再び「Slope」アイコンをクリックし、Hierarchyの先頭オブジェクトを「Slope_Master」から「Slope」に変える。以後はシーンファイル「Slope」に対して修正を加えていく。

<b>最初からやり直したい場合</b>

※最初からやり直したい場合は「Slope_Master」をクリックすれば、元の状態に戻せる。その際は「Slope」アイコンを削除し、「Slope_Master」を「Slope」にリネームする。その後「Save as」で新しく「Slope_Master」を作成し、あらためて「Slope」をクリックして、「Slope」シーンファイル上で作業をしよう。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7427ac06-1acf-4de5-1a50-3f1cc9b6ee91.png)
<b>注意点</b>

※作業は必ず「Slope」シーンファイル上で行おう。でなければ、RETURNキーでリスタートできなくなる。また、随時「Save」（Ctrl+S）で上書き保存して、フリーズなどの事態に備えよう。

#ステージのレベルデザイン#

![スクリーンショット (981).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/50933a64-6cbc-e26a-2dea-d240ad9ccc05.png)
21：はじめにHierarchyで「BG_Space」を選び、Inspector欄のSprite RenderからVisibility Optionsを選んで、隠しメニューを開く。その後、Order in Layerの値を「-1」にしておこう。これで背景が一番奥になる。

![スクリーンショット (129).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/f497a31b-201a-5683-8f6e-766220ad266f.png)
20：また、HierarchyでInspectorのTransform→Spaceのパラメータを増減すると、背景を拡大・縮小できる。Positionのパラメータで場所の移動、Rotationのパタメータで角度を変えられる。

![スクリーンショット (130).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7b2a4928-ec2c-7e00-3777-caaf5ab5bfbf.png)
21：プロジェクトエリアでAssets→Tamakorogashi→Prefabsを選択し、プロジェクトエリアに表示される各種のPrefabをHierarchyエリアにドラッグ＆ドロップすると、シーンビューに新しいオブジェクトを表示させられる。

![スクリーンショット (131).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/c1aa8885-e372-4afa-2f41-59278d7b7535.png)
22：なお、配置したばかりのPrefabは既存のオブジェクトと重なっていることが多い。

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/bfa68fdf-93a6-a1c1-dc02-828bd0e2c657.png)
23：そのため、場所が不明なときはHierarchyエリアでオブジェクトを選択して、移動させよう。

<b>注意</b>
![スクリーンショット (131).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/fe2e7fb7-ea12-5df2-5229-3a679dfe3639.png)
プロジェクトエリアは倉庫で、Hierarchyはシーンビューに配置されるオブジェクトの一覧表だ。シーンビューからオブジェクトを削除するときは、Hierarchy上で削除しよう。プロジェクトエリアのアイテムを削除すると、復活させられないので注意！

![スクリーンショット (118).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/e79e5b41-b88b-939e-0aa7-213305fa8306.png)
24：何度もプレイと修正を繰り返して（＝イテレーションを繰り返して）楽しいステージを作ろう。

#Prefabsの種類#
##Slope##
![スクリーンショット (135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/6e0274f0-292f-0959-f50c-366a217f1e4a.png)
Slopeはボールが上を伝って転がり落ちる斜面だ。Transformで大きさ・角度・位置を修正できる。

![スクリーンショット (137).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/634666ba-37a4-6d20-d05a-79be11898a49.png)
Slopeの大きさを変更したら、InspectorのBox Collider 2Dの値を修正し、slopeの大きさと緑色の枠の大きさをあわせておこう。この緑色の枠が、いわゆる「当たり判定」に相当する。

##Rotate##
![スクリーンショット (157).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/d5e94830-a62e-2ff6-2b49-a834d17aecca.png)
Rotateは自動的にくるくる回転する板で、当たり判定を持っている。InspectorのAuto RotateにあるRotation Speedのパタメータで回転速度を変えられる。値が正なら右回り、負なら左回りになる。

##Bound##
![スクリーンショット (139).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7cf27a44-9fcc-8e77-095d-60e2f38de42a.png)
Boundはボールが高く跳ね返るバネだ。反射係数はBoundのInspectorからBox Collider 2D内にある「Extra Options」を開く。その後、Material欄にある「Bound」アイコンをクリックする。

![スクリーンショット (140).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/12b098cc-2e78-cfd2-68c2-7201b502181d.png)
続いて「Bound」アイコンを選択する。このBoundアイコンはFisix Material 2Dとよび、オブジェクトの反射度合いを設定できる。

![スクリーンショット (141).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/e1731d66-fc42-f147-df44-f345c44c7f66.png)
InspectorにBoundの反射係数が表示される。Frictionで摩擦係数、Buncinessで反射係数を、それぞれ変更できる。

##Boundを増やす##

![スクリーンショット (148).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/2801fc53-deaf-e7ca-9b94-ac4473948690.png)
プロジェクトエリアからBoundのprefabsをHierarchyにドラッグ＆ドロップすると、シーンビュー上に新しいBoundが配置される。ただし、これだけでは音が鳴らないので、あらためて設定する必要がある。追加したBoundのInspectorから「Condition Collision」にある「Custom Action()」の「None(Object）」メニューをクリックしよう。

![スクリーンショット (149).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/73533dc0-d5e6-14be-5283-35d84214e5ce.png)
Select ObjectウィンドウのSceneメニューから「Sound」アイコンを選択する。

![スクリーンショット (150).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a482cb82-56bb-f208-5ce6-557bc7efe13c.png)
「No Fliction」メニューから「AudioSource」→「PlayOneShot(AudioClip)」を選択する。

![スクリーンショット (151).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1aa733c7-da91-9b28-8e7e-998f6f97dfd6.png)
プロジェクトエリアのAssets→Tamakorogashi→Audioを選択し、「Jump01」ファイルをドラッグ＆ドロップして設定する。これでボールが跳ね返ると音が鳴るようになる。

##Boundごとに反射係数を変える##

![スクリーンショット (144).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/67239578-d6cf-6b3a-56bb-1d3d6f4d5fa5.png)
複数のBound Prefabsで個別に反射計数を変更したい場合は、新たにPhysics Material 2Dを作成し、反射係数を変えたいPrefabsに設定すれば良い。まず、プロジェクトエリアでAssets→Tamakorogashi→Visualを選び、右クリック→Create→Physics Material 2Dを選択する。

![スクリーンショット (145).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/8153d2ef-1a12-5e5c-4d20-e3437425adbd.png)
新しいマテリアルに名前（Bound2など）をつけて、Bouncinessの値を調整する。

![スクリーンショット (146).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/b254aba9-546f-f67b-eb92-40853b8aa284.png)
設定したいPrefabsを選択し、Box Collider 2DのExtra Optionsを開いて、Materal欄に新しく作ったPhysics Material 2Dをドラッグ＆ドロップする。

#Ball#

##Ballの色を変える##
![スクリーンショット (138).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/83d9b5bc-e80c-a4e2-c832-69134e8d0ded.png)
Ballの色を変えるのは簡単だ。HierarchyからBallのInspector→Sprite Renderer→Colorでカラーピッカーをクリックし、任意の色に変更すれば良い。

##Ballの重さを変える##
![スクリーンショット (982).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a6a585ed-8abf-3a59-2a25-458c5b437692.png)
Ballの質量を変えるには、HierarchyからBallを選択し、InspectorからRigidbody 2Dでパラメータを変更すればいい。各パラメータの意味は下記の通り。
Mass 質量
Friction　摩擦
Angular Friction　角摩擦
Gravity　重力

##Ballを増やす##
![スクリーンショット (159).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/9d6abc01-4b2a-2a7a-d40b-267e9cf4dec6.png)
Ballを増やすには、プロジェクトエリアからBallをHierarchyにドラッグ＆ドロップする。そのままではシーンビューでオリジナルのBallと同じ場所に表示されるため、場所を移動させる。追加されたBallには独自のパラメータを設定できる。

#Move Floor#
![スクリーンショット (152).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a7ea6cb4-a0be-9c85-40be-573577969aee.png)
Move Floorは一定ルートで移動する板。Insopectorの「Patrol」で速度や移動ルートを設定できる。Speedのパラメータで速度が変わり（マイナスにすると逆方向に移動する）、Stopsの座標を変えるとUターンの座標を変えられる。

![スクリーンショット (154).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/49581941-298a-b323-18e8-8b6b0ae3add5.png)
InspectorのPatrolにある「＋」ボタンをクリックし、新しい座標を設定すると、新しい巡回ルートを設定できる。3つ以上のポイントを設定するとUターンではなく、一定軌道を周回する。ただし、このままでは保存されないので、もうひと手間が必要だ。

![スクリーンショット (156).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/0518f0af-57cf-3edf-a4bb-bde84b3082bb.png)
同じように「＋」ボタンをクリックして、もう一つルートを設定する。その上で「ー」ボタンをクリックしてルートを削除すると、一つ前のポイントが保存される。

##Burn##
![スクリーンショット (987).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/f2cff038-13b9-9d04-a211-d1b464ee64f8.png)
BurnはBallが当たると反射して消える板。プロジェクトエリアからHierarchyにドラッグ＆ドロップして、シーンビュー上で場所を移動させれば良い。ただし、このままではBallが当たっても音は鳴らない。そのため「Boundを増やす」と同じように、別途設定する必要がある。

「![スクリーンショット (988).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/40c7e890-e7bf-795e-0247-f10fa1c42d6c.png)
まずCondition Collisionの「None(Object Menu）」をクリックして、Select Objectウィンドウを表示する。

![スクリーンショット (989).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/4062c53d-508e-f2d5-272d-882fe18d15e4.png)
次にSceneメニューをクリックし、None(Object)メニューをクリックして、「Sound」アイコンをクリックする。

![スクリーンショット (990).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1700b58a-3df8-5867-563c-27acadbb6258.png)
次に「No Friction」メニューをクリックし、AudioSource→PlayOneShot(AudioClip)を選択する。

![スクリーンショット (991).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/7cc788a5-1f91-9be4-9a83-f18145eec7d9.png)
この時点でオリジナルのPrefabsに設定されているオーディオファイル「powerup04」が設定されている。別のオーディファイルに変更してもOKだ。実際にゲームを起動して、ボールが当たったら音が鳴るか確認しよう。

##Particle##
![スクリーンショット (133).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/952af774-2b66-f223-aaac-90af229a5f88.png)
HierarchyのParticleを選択し、InspectorのBox Collider 2DのScaleの値を変更すると、星の瞬きの出現する範囲を変えられる。またObject Creator AreaのOther Option欄にあるSpawn Intervalの値を変えると、明滅の間隔を変えられる。なお、Particleはオブジェクトであって、Prefabesではない。FlagRedと同じく数を増やす必要が無いため、Prefabsには設定されていない。