新規記事の投稿を行うことで、非表示にすることが可能です。
2019年12月09日
【まとめ】 英語版Udemyで学ぶ!C#
Udemy講座、"Complete C# Masterclass"の受講をようやく完了したので最初に立てた目標の達成具合、自己評価や、コースをやり終えての感想をまとめる。
目次
1、受講前のゴールイメージとスケジュールの確認
2、講義に関して
3、感想
受講前のゴールイメージとスケジュールの確認
■受講前のゴールイメージの確認
・C#でのプログラミングを思い出す。 〇
・C#7での言語仕様を理解する。 〇
・WPFが何かを理解して使えるようになる。 〇
・LINQを利用したDBの操作ができるようになる。 △
・Unityを使ったゲームを作成する。 〇
■スケジュールの確認
- 23日程度で完了するつもりで受講をする。→29日+αで完了
1つ1つの動画の時間が長いものあり、短いものありとバラバラなので、努力と進捗が乖離しやすく、ペースを保つのが難しかった。
■講義に関して
・良かった点
・改めてC#を思い出して、プログラミングをできた
・C#の最新仕様に触れられたこと。自分が勉強したときから大きく進化しており、それに触れられた
・WPFの仕組みやコーディングに関して勉強できた
・Unityに触れられたこと。こんなに手軽にリアルがゲームができることが学べたこと
・難しかった点:
・Linqのあたりが難しかった。DBは学んでいたが、実際のコーディングになるとスムーズに知識が出てこなかった。結構忘れている部分もあった。
・Unityの講義は楽しかったが、動画についていくのが大変であった。ちょっとした操作(チェックボックスON,オブジェクトのD&D)が大きな結果の違いを生むため、注意力が落ちているとすぐにわからなくなってしまい、リカバリーに時間がかかってしまった。
・お手本のコードを十分活用できなかった。Unityでは、UI操作も結果に影響を与えるため、コードのみの確認では十分でない。また、コーディング自体は量は多くないので、充分対応できていたので、使いどころがいまいち見いだせなかった。
・1本の動画の最終目標が不明なままスタートすることがあり、集中力を保ちながら動画を見るのが難しい時があった。
■感想
全体的な話
・C#の再勉強という面で知識を思い出すことができ、成果があったと思う。
・Unityはまったく期待していなかったが想定外に面白かった。ゲーム3本を作ることができ、当初、簡単にさらっと終わるつもりであったが、想定外に時間はかかりはしたが、内容も充実しており、良い経験になったと思う。今後もUnityの勉強はしていきたい。
開発環境など
・VisualStudioのコードの機能にかなり助けられた気がする。コーディングを自動補完で効率的に進めたり、コードのバグをすぐに知らせてくれたりと非常に役に立った。
・Microsoft社のC#のドキュメントが非常に充実しており、役に立った。XML Controls Galleryもお勧めだ。
自分のこと
・Linqに関しては、最終的にはついていくのがやっとであった。自分の弱点?まだDB関連の勉強が足りないということか?
・自分の勉強のパターンとして知識勉強の講座はどうも苦手な傾向があることが再度わかった。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年12月08日
【29日目】英語版Udemyで学ぶ!C#
進捗100%
ようやく受講を完了した。
■フルーツ忍者ゲームの作成(続き)
ゲームの完成
点数表示などのゲーム画面の作成を作成する。とはいっても現在の点数と過去の最高得点を表示するだけだ。
次に、爆弾のオブジェクトの設定を行う。爆弾の出現率や、ゲーム中に爆弾を切るとゲームオーバーになるので、爆弾を切った際にゲームを止める実装を行う。
さらにゲームオーバー画面、リスタートの実装も行う。この時点ではまだ、オレンジと爆弾しかゲームに出現しないが、最後に出現するオブジェクトをスイカ、バナナを追加して、ゲームの完成となった。
アンドロイド端末への対応
ゲームをアンドロイド端末へエキスポートしてプレイできるようにしたり、ゲームの中に広告を表示する方法に関しての説明があった。残念ながら、アンドロイド端末を持っていないので視聴のみとした。
以上を持って本講座の学習を完了した。
■次は
まとめを作成する。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年12月05日
【28日目】英語版Udemyで学ぶ!C#
進捗95%
忘年会シーズン、年末シーズンとなって忙しいが、少しでも時間をとって進めている。
■フルーツ忍者ゲームの作成(続き)
ブレードの作成を行う。ブレードはマウスの動きに応じてブレードを表示し、この表示とランダムに出てくるオレンジの衝突を判定し、衝突がした場合に果物を分割するスクリプトが呼ばれるように実装を行う。
ブレードの表示位置が下にずれるのが気になるがとりあえず、鮮やかにオレンジがカットできるようになった。
■次は
点数表示などのゲーム画面の作成を行う。
予定スケジュール上はオーバーしているがやむなしとして文字通り”のんびり”進めていく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年12月04日
【27日目】英語版Udemyで学ぶ!C#
進捗95%
少しずつだが進めている。
■フルーツ忍者ゲームの作成(続き)
フルーツをランダムに投げる部分の続き、角度、強さ、方向などをランダムにしながら、投げる実装を行った。
■次は
ブレードの作成を行う。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年12月02日
【25日目】英語版Udemyで学ぶ!C#
進捗94%
とにかく、ゲーム完成のためひたすら進める。
■Zig Zag Cloneゲームの作成(続き)
パーティクルの設定
キャラクタやオブジェクトから、パーティクルを発生させるeffectの設定をすることができる。
このパーティクルの設定は、色や生存時間や、放出する間隔など詳細な設定が可能だ。
バックグラウンドの音楽の設定
Assetストアからフリーの音楽をダウンロードして、バックグラウンドに設定した。
マップの生成
今までは、マップを手動で作成していたが、これをPCで自動的に行うようにする。
そして、ゲームは完成となった。
■次は
フルーツ忍者ゲームの作成を行う。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年12月01日
【24日目】英語版Udemyで学ぶ!C#
進捗93%
ZigZagゲームの作成に着手。集中してひたすらコーディングを進める。
■Zig Zag Cloneゲームの作成
前回までの教訓としてちょっとした設定を見逃すと思わぬ時間のロスにつながるので、視聴をする際は速度を1.0にしてコーディングを行いながら進める方法に変更する。
基礎知識補充
まず始めに今回のゲーム作成で使う知識として、コードからのオブジェクト複製、無限ループとその途中中止方法、またゲーム内でのデータ保存方法、RayCastを学んだ。
RayCastとは
オブジェクト同士の位置関係を把握する仕組みで、頭上などにあるかの判定などができる機能である。
学習中、RayCastのScreenToRayのテストのところで少し詰まった。テストの際のやり方が間違っていていつまでたっても衝突判定ができなかった。
結局はマウスの位置で判定しているので、プレビュー画面でマウスを動かさなければならない。
一生懸命オブジェクトの配置画面でオブジェクトをドラッグしていた。
なお、今更だが、PlayボタンはCtrl+Pと覚えておくと便利。とにかくよく使うので。
ZigZagCloneの作成
ZigZagゲーム(https://www.youtube.com/watch?v=eEmBgJlHDk0)
画面構築とキャラクタ配置、動作
まず、テクスチャのダウンロードから。壁の模様のテクスチャーをAssetストアからDLする。ダブル画面で作業しているとImportのダイアログが隣のモニタに出ていてしばらく気が付かないことがよくあるので、注意が必要だ。大したことがではないが、5分くらい待ってしまった。
Assetストアでは様々なキャラクターや無料、有料で販売されている。無料のものでもとてもクオリティが良い感じだ。
購入したキャラクタにはあらかじめアニメーションが付いていて、走ったり、ジャンプしたりがすぐにできるようになっている。
これらを作成中のゲーム内に配置するだけでいきなり、作成中のゲームがゲームらしくなる。
キャラクタの位置に合わせて、アニメーションを設定する。ここで役立つのがRayCastだ。ブロックから落っこちて落下している状態にあるのか、をキャラクタとオブジェクトの位置関係を判定することができ、この結果に応じてアニメーションを替えることができる。
アニメーションの切り替えタイミングも1つの動画が終わったときに替えたり、強制的に替えたりなど細かな設定ができる。
ゲームスタート、ゲームのリスタート
シーンの移動および、キー操作を監視を追加する実装を行う。
クリスタルゲットとスコア付け
クリスタルは再度、Assetストアから入手する。クリスタルとキャラクタの衝突判定を追加し、衝突の瞬間にクリスタルを消去するとともにスコアをつけるようにする。
ハイスコア
ハイスコアの記録を行う。”ゲーム内でのデータ保存方法”に従い、ハイスコアーデータを保存する。
■次は
パーティクルの設定とバックグラウンドの音楽の設定、マップの生成を行い完成となる。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月30日
【23日目】英語版Udemyで学ぶ!C#
進捗87%
一気にゲームを完成させる勢いで進める!
■Game Pongの作成(続き)
ゲーム画面のメインメニューの作成から開始
順調に作成を行っていたが、いきなり画面が真っ黒になり、さっきまで見えてた文字が見えなくなってしまう状況に陥った。詳細はわからないが、試行錯誤して結局、フォントを設定しなおすことにより回避。
ゲームの画面構築
次にゲーム画面に移る。Unityでは、パーツをひな形(prefabs)として登録して使い回すことができる。これは同じような画面を複数作らなけらばならないとき大変便利だ。
ゲーム画面の設定は細かく、以上に時間がかかってしまった。ちょっとした設定や、UI操作を抜かすと意図通りにならないため、その復旧に時間がかかってしまった。
ゲームの動作の実装
いよいよ、ゲームのパーツを動かし本格的にゲームのロジックの作成にかかる。始めにラケットの動作のコーディングを行った。
このゲームは2人でピンポンをするようなゲームなので、それぞれのプレイヤーがキーボードで操作ができる方法を学んだ。
そして、ボールの動作の実装を行う。ボールのバウンドの仕方を衝突場所に応じて変更したり、衝突の回数により、スピードを替えたりして、ゲームらしさを出していく。
この後、スコアのカウントやゲームオーバー画面への遷移、サウンドを追加を行い、2人でプレーするゲームとしていったん完成した。
最後にプレーヤー2をPC自体が操作するアルゴリズムを実装して、一人でも遊べるゲームとして完成となった。
作成後コメント
今回のUnityでのプログラミングはUnityでの操作がメインで、ちょっとしたアルゴリズムの補助的にC#で書くという感じであった。
Unityの操作の仕方や設定の仕方が細かくてその周りでバグが出て思い通りの動作にならないことがあり、時間がかかってしまった。
例えば、点数が入った際に、関連付けるオブジェクトを間違っていて、スコアの文字列が更新されなかったり、QAコーナーでは、ボールオブジェクトと衝突の際の処理のスクリプトが関連付けれてないことに起因すると思われる質問などがあった。動画を見ていても、見落としたりすることがあるので気を付ける必要がある。
しかしながら、このようにUI操作主体でゲームが簡単に作れるので、ちょっと実装するとどんどんゲームが動作し始めるので学習が加速度的に進んで楽しい!
■次は
ZigZagゲーム?の作成を行う。このゲームは3Dのゲームのようだ。ZigZagゲーム(https://www.youtube.com/watch?v=eEmBgJlHDk0)
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月29日
【22日目】英語版Udemyで学ぶ!C#
進捗82%
順調。
途中で動画が追加されているので、受講完了はおそらく頑張っても25日目くらいになりそうな感じ。
■Game Pongの作成(続き)
ゲームの作成が始まったと思いきや、ゲームのパーツの説明が続く。今回の講座の動画のパターンとして、始めにゴールが示されないことが多いので、いったん最後まで動画を1.5倍速で見て、2回目にコーディングしながら緩急をつけて視るという勉強方法で進めている。テキスト
UI要素として画面にテキストを配置可能。キー操作でテキスト更新をするところまで学んだ。
ボタン
テキスト同様、画面にボタンを配置可能。ボタンのクリックでテキスト変更したり、シーンを替えたりすることができる。UIの画面で行うハンドラの設定が特徴的でわかりやすい。
サウンド
著作権フリーのサウンドをダウンロードして使用する方法の説明。今までプログラムでサウンドを扱ったことがないので、新鮮な感じ。
Game Pongの概要説明
再度、ゲームの概要の説明。詳細にゲームの外部仕様の説明があった。
■次は
まずは、ゲーム画面の作成から開始する。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月28日
【21日目】英語版Udemyで学ぶ!C#
進捗80%
新しいことが次々に出てくるが、結構面白い。
■UNITY-基礎(続き)
剛体
ボールに対して重力を追加してみたり、スピード変えてみたりして遊ぶ。面白いのがボールに簡単に図形を追加して、いびつな図形を作成できて、そのまま転がせるところだ。さらにそのいびつな形のおかしな転がり方をさせることができる!
ほとんどコード書いてないのにこんなことができるのはなかなかすごい。
衝突
衝突判定もいろいろできる。通常は物体と同じサイズで衝突判定を行うが変更することもできる。例えば半径1の級の衝突判定のサイズを半径2のサイズにできたりする。
また、衝突した際に跳ねたりさせることも簡単にできる。その場合は物理的素材のバウンス属性を設定する。
ひな形(Prefabs)
作成したオブジェクトをあらかじめひな形として登録しておくことができる。こうすることにより、簡単に複雑な設定のオブジェクトを追加できるし、コードでオブジェクトを自動生成したりすることもできる。
また、ひな形の登録先のAssetsの中はフォルダを作成してひな形などを整理することができる。
C#のスクリプト
MonoBehaviourの派生クラスのStart関数は始めに1回、Update関数は頻繁に呼ばれる。
よく使う関数
乱数はゲームでよく使用するものだが、C#のRandom関数を使うことができる。
また、数学系の関数はMathfにまとめられているとのこと。
以上で、基礎編を終了し、いよいよ、本格的にゲーム作成に入る。
■Game Pongの作成
Pongゲームとはエアホッケーのようなゲームでだんだん打つ玉の速度が早くなっていくゲームだ。このゲームは2Dだが、オブジェクト衝突や、画面遷移、テキスト描画など様々なことを学ぶ。
Game Pong
■次は
まずは、テキストの配置から勉強をスタートする。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity
2019年11月27日
【20日目】英語版Udemyで学ぶ!C#
進捗76%
UnityのIDEに苦戦しながら進めている。
■UNITY-基礎
いよいよ、C#のゲームの世界、Unityに入っていく。ちなみにゲームの作成経験はほぼない。Unityとは統合開発環境を内蔵し、複数の機材(platform)に対応するゲームエンジンである(Wikipediaより)。
UnityのIDEをインストールして、起動する。始めはUnityのIDEの説明からスタートする。画面の中にボールと地面をおいて、ボールを転がしたりするところからだ。
操作方法は動画をこまめに止めないとすぐ、何をしているかがわからなくなる。結構時間がかかる。それに、オブジェクトや、カメラの調整も慣れてないため、時間がかかる。
地面やボールの表面の色や材質を定義できるマテリアルを複製するのにCtrl+Dを使うのがなかなかわからず苦戦。最終的にはQAを見てようやく分かった。
しかしながら、実行するとオブジェクトがちょっと動いただけでも達成感がある。
次に、基本物理に関して学ぶ。Unityでは、剛体(Rigidbody)の概念や衝突(Collider)や重力(gravity)などの概念がある。これらの簡単な説明を聴いた。
■次は
剛体、衝突などの構成要素に関して詳しく学んでいく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:Unity