Unityに関連する記事です

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

 課題としましては、スクリプトを使った、他のゲームオブジェクトの操作が主軸です。

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

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

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



1.PlayerControllerスクリプトを修正して、移動の距離を変更する


 player ゲームオブジェクトにアタッチされている PlayerController スクリプトを修正して、左右移動の際の距離を固定値ではなく、変数を利用して変更できるように修正してください。

 ヒントは以下の通りです。ここでも問題の切り分けを行っていきましょう。

 ・新しい変数を用意して初期化する
 ・移動する際の処理にこの新しい変数を使うようにする


 1つずつ順番に進めてみてください。

<成功動画> 移動距離を変数に変更して移動する。変数の値は 1.0f
https://gyazo.com/83067b9093112c5c4adaa3474b4288e9


回答例

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



2.ArrowGeneratorスクリプトを操作して、矢の生成を制御する


 ゲームを実行すると、一定時間ごとに 矢 が生成されます。
 キーボートの S キーが押されたときには、この矢の生成をストップするようにしてください。

 もう一度 S キーが押されたら、矢の生成を再開するようにしてください。

 ヒントは、どのようにすれば制御をすることができるか、を考えることです。

 多くの場合、プログラムの制御には if 文を使い、条件を評価することによって分岐を作ることが可能です。
これを利用してください。

 ・キーボートの S キーが押されたときには、この矢の生成をストップする
 ・もう一度 S キーが押されたら、矢の生成を再開する
 ・この制御を行うためには if 文を利用する
 ・if 文には条件が必要になる
 ・条件判定のための変数を用意する


<成功動画> 矢の生成を停止 => 再開
https://gyazo.com/5e2e5174572b8efdb74767b5108c132c


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



3.ArrowGeneratorスクリプトを修正して、ゲーム中にスクリプトから別のゲームオブジェクトのコンポーネントの操作をする


 矢を生成したときに、矢の色を変えてみましょう。

 30%の確率で、色の違う矢を生成するようにしてください。

 ヒントは、生成された矢のゲームオブジェクトに対して、操作を行うことです。
生成される部分まではそのままで問題ありませんので、その後に処理を追加する必要があります。

 また、矢のゲームオブジェクトにアタッチされている SpriteRenderer コンポーネントを取得できれば、色を変更する操作が可能になります。

 変更する色は何色でも構いません。また30%の乱数の扱い方も自由です。乱数の幅は 0 - 100 でもいいですし、 0 -10 でもよいです。


 ・矢を生成して、位置を変更する部分まではそのままで変更なし
 ・そのあとに、矢の色を変えるかどうか、判定を行う
 ・判定は30%の確率を用いる
 ・制御を行うので if 文を利用する
 ・もしも30%の確率で色が変わることになった場合には、go 変数を使って SpriteRenderer の情報を取得して色を変える
 
<成功動画> 30%の確率で矢の色を緑に変える
https://gyazo.com/80c99e13e5a718c66d99139224a05061


<= クリックすると回答例が開きます。問題2の回答の記述はありません。



4.ArrowGenaratorスクリプトを修正し、一定回数生成するたびに大きな矢を1つ生成するようにする


 一定回数の設定値については、インスペクターで変更できるように、public修飾子の変数を利用して用意してください。
大きな矢の大きさは自由です。通常の矢の2〜3倍くらいになるようにします。

 ヒントは以下の通りです。
 
 ・矢を生成した回数をカウントできるようにする
 ・大きな矢を生成したらそのカウントを 0 に戻して、再度生成回数をカウントできるようにする
 ・大きな矢は、矢のゲームオブジェクトのTransfromの情報にあるScaleを変更することで実現できる
 ・ゲームオブジェクトの大きさを管理しているのは Transfromコンポーネント。
  スクリプトでは [操作対象のゲームオブジェクトの代入されている変数.transform.localScale] と記述することで操作できる

 矢を生成した回数をどのタイミングでカウントするのか、それをどうすれば一定回数になったと判断できるのか、がポイントです。
これも if 制御文を利用して実装出来ます。条件として、何を利用すれば一定回数になったと判定できるかを考えてみてください。

 
<成功動画> 3回に1回大きな矢(3倍)を生成する
https://gyazo.com/d7fa4571892248e5a9a01c8bb10af009


<成功動画> 3回に1回大きな矢(3倍)を生成するとともに、30%の確率で色を緑に変える(問題3と組み合わせる)
https://gyazo.com/1b6ed3af5abab6d6a5511a744b9d5de5



<= クリックすると回答例が開きます。問題2、3の回答の記述はありません。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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