i-school - 復習課題 チャプター4 その1
 Unityの教科書のチャプター4終了後の復習課題です。
SwipeCarのプロジェクトを開いて、復習を行ってみてください。

 課題としましては、スクリプトを使ったゲームオブジェクトの探し方とコンポーネントの扱い方が主軸です。

 課題の内容を確認して、処理を実装してください。実装した際の処理は、課題内で用意した動画の状態になるようにお願いします。
なお回答例は閉じてありますので、ご自分の実装を行った上で確認してください。

 課題にはヒントを提示してありますが、分からない場合にはネット検索をして、調べてみてください。

 また処理には適宜Debug.Log()メソッドを入れて、どこまで正常に処理が動いているかを確認していくように心がけてください。



1.ヒエラルキーにあるゲームオブジェクトを探して、名前を変更する


 キーボードの N キーを押した際に、ヒエラルキーにある "Car" ゲームオブジェクトを探して、名前を "Super Car" に変更するようにしてください。

 ヒントは、課題の切り分けです。一度にすべての処理を実装しようとするのではなく、1つずつ順番に解決していく方法を考えてください。

 ・キーボードの N キーを押した際
 ・ヒエラルキーにある "Car" ゲームオブジェクトを探して
 ・名前を "Super Car" に変更する

 たった1行の文章ですが、プログラムとして処理を実装するには、大きく分けて3つの手順を実装しないとなりません。

 1つずつ順番に進めてみてください。なお、既存のスクリプトに処理を追加しても構いませんし、新しいスクリプトを用意しても構いません。

成功動画
https://gyazo.com/d80428dead523ffae13002a7f8058def


回答例(新しいスクリプトを用意しています)

<= クリックすると回答例が開きます。



2.コンポーネントを取得して操作する


 car ゲームオブジェクトにアタッチされている、SpriteRenderer コンポーネントをスクリプトで取得して操作しましょう。

 SpriteRendererをスクリプトで取得し、キーボードの D ボタンを押したら、car ゲームオブジェクトを画面上から消えるようにしてください。
また消えている状態で再度 D ボタンを押したら、car ゲームオブジェクトを再度画面上から表示してください。

 ヒントはSpriteRendererのEnebledのスイッチをスクリプトから操作することです。このスイッチはコンポーネントのオン/オフを行っていますので
スクリプトからこの部分を操作できれば、画面上のcar ゲームオブジェクトの表示のオン/オフを変更できます。




 このコンポーネントを操作するにはまず car ゲームオブジェクトをヒエラルキーから探す必要がありますので、この手順も順番に課題を切り分けて考えてみてください。

 ・ヒエラルキーにある "car" ゲームオブジェクトを探して
 ・"car" ゲームオブジェクトの持つ、SpriteRendererコンポーネントを取得する(変数に代入しておいた方が便利)
 ・キーボードの D を押した際に
 ・"car" ゲームオブジェクトのSprite Rendererコンポーネントをオン/オフする


成功動画
https://gyazo.com/683da70bb70aec2109eff78a3de3b194


回答例(先ほどのスクリプトに追記しています)

<= クリックすると回答例が開きます。



3.ゲーム中にスクリプトからコンポーネントの追加をする


 まず最初に car ゲームオブジェクトをヒエラルキーで選択して、インスペクターを確認します。
一番下に Add Component というボタンがありますので、そちらを選択します。

 検索窓で Rigidbody2D を探してください。そのコンポーネントをアッドします。

 このアッドする操作をスクリプトで行うようにします。

 操作する内容がわかったら、アッドしたRigidbody2DをRemoveしてください。

 
 課題としましては、キーボードの B を押した際に、car ゲームオブジェクトに、Rigidbody2Dコンポーネントがアタッチされていなければ新しく追加する、です。

 ここもまずは car ゲームオブジェクトを探す必要があります。
 ポイントは、「Rigidbody2Dコンポーネントがアタッチされていなければ」です。つまり、同じ操作を行った際には
2つ目のRigidbody2Dコンポーネントがアッドされないように制御をする必要があります。


ヒントのサイトです。
かめくめさま
https://gametukurikata.com/basic/addcomponent


成功動画 Debug.Logを使うと処理が分かりやすくなります。
https://gyazo.com/61e3903872f968c5f4c2e6179ed4381e


回答例(先ほどのスクリプトに追記しています)

<= クリックすると回答例が開きます。



4.ゲーム中にスクリプトからコンポーネントを削除する


 3の手順で追加されたコンポーネントを、キーボード の V ボタンを押した際に削除するようにします。
また、万が一、コンポーネントがない場合に削除するボタンを操作した場合には、エラーが出ないように制御をしてください。


 ・V ボタンを押した際に
 ・コンポーネントがアタッチされているかどうかを確認する => コンポーネントが変数に代入されているかどうかで確認が取れる
 ・コンポーネントがアタッチされている場合には削除する


ヒントのサイトです。
YTTMWork様
https://yttm-work.jp/unity/unity_0026.html
テラシュールブログ様
http://tsubakit1.hateblo.jp/entry/20120316/1331847...


成功動画 コンポーネントがアタッチされたり、リムーブされたり、アタッチされていない場合にはリムーブできないようにしている
https://gyazo.com/feb7fb932c3a05ba0acac9fb34676ffc


回答例(先ほどのスクリプトに追記しています)

<= クリックすると回答例が開きます。