├── README.md
├── README.txt
├── isp-sample
└── Scripts
│ ├── Attacker.cs
│ ├── Damageable.cs
│ ├── DefenceDamageable.cs
│ ├── DirectionalShotPlayer.cs
│ ├── EnemyB.cs
│ ├── FollowTarget.cs
│ ├── IPlayerDamageable.cs
│ ├── PlayerDefault.cs
│ ├── ShieldDamageable.cs
│ └── Shot.cs
└── 提出データ.md
/README.md:
--------------------------------------------------------------------------------
1 | # ゲームプログラミング2 2019年度生(木曜日3,4)
2 | - [企業へ提出するデータのまとめ方](https://docs.google.com/document/d/13AKqKXnycFbwY-VT-Btu9nifEalxnK-jiPCm2JsvGIs/)
3 | - [シラバス](https://1drv.ms/x/s!Anf4PowESFUjg_tpWDguYAyq68lTyQ?e=jyA0e5)
4 | - [SOLID原則](https://docs.google.com/document/d/1TVdyioxBuSwz89Vh92ziADulEB47P5IMolytxopdBrM/)
5 | - [paiza開発日誌. 初心者がC#の基本からアプリ・ゲーム開発まで学ぶための記事まとめ](https://paiza.hatenablog.com/entry/2020/06/09/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%8CC%23%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8B%E3%82%89%E3%82%A2%E3%83%97%E3%83%AA%E3%83%BB%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E3%81%BE%E3%81%A7%E5%AD%A6%E3%81%B6)
6 | - [GitHubの開発フロー](https://sketchboard.me/LBSAHzZ8ynEE)
7 | - [paiza開発日誌. プログラミング初心者向け「PHPの学習に役立つ情報」まとめ](https://paiza.hatenablog.com/entry/2020/07/11/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91%E3%80%8CPHP%E3%81%AE%E5%AD%A6%E7%BF%92%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A4%E6%83%85%E5%A0%B1)
8 | - [手軽にできるUnityC#高速化テクニック7選](https://youtu.be/QQhmOyiBdkI)
9 |
10 | # 後期17回目
11 | 金曜日の講義開始時点で提出されているデータでDVDの制作を始める。今日中に焼く対象までプロジェクトを仕上げて、ビルドしたものを提出フォルダーにコピーすること。
12 |
13 | ## 実行ファイル名とファイルアイコンの設定
14 | ビルドの際には以下を設定する。
15 |
16 | - 64x64ピクセル程度のサイズで、ファイルアイコン用のPNG画像を作成して、Unityプロジェクトに追加
17 | - EditメニューからProject Settings > Player
18 | - Product Settingに作品名を設定
19 | - Default Icon欄にファイルアイコン用のPNG画像をProjectウィンドウからドラッグ&ドロップ
20 |
21 | 以上をやってビルドすると、ファイル名とファイルアイコンが設定される。
22 |
23 | ## 提出
24 | - 実行ファイルは `X:\2020年\ゲーム学科\Student\卒業制作\最終データ`
25 | - プロジェクト一式をZIP圧縮して `X:\2020年\ゲーム学科\Student\卒業制作\最終プロジェクトフォルダー`
26 |
27 | ## リンク
28 | - [卒業制作](https://github.com/dat19/sotsusei)
29 |
30 |
31 | # 後期11-16回目
32 | ## 話題
33 | - [NoSeams. 心が折れずにゲーム開発を続ける方法](https://twitter.com/ozora_develop/status/1275949779457957888)
34 | - ツイートのドキュメントだけではなく、返信や引用ツイートのコメントも必見
35 |
36 | ## 参考
37 | - [ハイパーカジュアルゲームナイト Voodooプロトタイプ改修事例 - Unityステーション](https://www.youtube.com/watch?v=BMuFP4bpuHM)
38 | - [unity1week online共有会 #3 1/23 21:00から](https://meetup.unity3d.jp/jp/events/1270)
39 | - [ごたゆに](https://www.youtube.com/watch?v=FTHfVpBfpo0&feature=youtu.be)
40 |
41 | ## 内容
42 | - [卒業制作](https://github.com/dat19/sotsusei)
43 | - 残り作業の確認
44 |
45 | # 後期15回
46 |
47 | ## 予定
48 | - 進捗エクセルの共有
49 | - https://drive.google.com を開いて、Googleアカウントでログイン
50 | - 進捗のエクセルファイルを任意のGoogle Driveフォルダーにドラッグ&ドロップしてアップロード
51 | - アップロードしたエクセルファイルを開く
52 | - 右上の共有ボタンをクリックして、「このリンクを知っているインターネット上の全員が閲覧できます。」にして、リンクをコピー
53 | - 共有URL報告フォームを開いて、氏名を入力したら、共有URL欄を選択して、Ctrl+VキーでURLを貼り付けて送信
54 |
55 |
56 | ## 提出
57 | - タイトルから起動して、各シーンを確認できる実行ファイルをビルドして、以下の場所に提出
58 | - シーンの切り替えルールが実装されていない場合は、デバッグキーで切り替えができるようにする
59 | - 各シーンで、どのように切り替えればよいかを README.txt に簡単にまとめて、提出フォルダー内に入れておく
60 | - 提出先 `X:\2020年\ゲーム学科\Student\卒業制作\実行フォルダー1224`に作品名のフォルダーを作成して、そこに実行に必要なファイルを全てコピー
61 |
62 |
63 | # 後期10回目
64 | ## 話題
65 | - [Gotanda.unity #16](https://meetup.unity3d.jp/jp/events/1268)
66 |
67 |
68 | # 後期9回目
69 | ## 話題
70 | - [ClusterGAMEJAM2020 in WINTER](https://www.contest.cluster.mu/gamejam2020winter-home)
71 | - 12/17エントリー締め切り
72 | - 12/18 20:00から48時間
73 | - [CODEGYM ISA](https://codegym.jp/isa/)
74 | - [天神いな. 現役ゲームプログラマが解説。ゲーム開発の知識・技術を教えます!](https://www.youtube.com/c/ina-amagami/videos)
75 |
76 |
77 | # 後期6-8回目
78 | - [paiza開発日誌. プログラミングがゲーム感覚で学べる!スキルチェック問題とは](https://paiza.hatenablog.com/entry/2020/11/16/133000)
79 | - レーティングアップキャンペーン中
80 | - [卒業制作](https://github.com/dat19/sotsusei)
81 |
82 |
83 | # 後期5回目
84 | - [卒業制作](https://github.com/dat19/sotsusei)
85 |
86 | # 後期4回目
87 | - 卒業制作の作業、質疑応答
88 | - ローグライク
89 | - キャラクターの腕の位置の調整 / ボス / カメラ制御 / マップ作成 / ザコ敵
90 | - Flying in the sky
91 | - シーン遷移 / ルールの実装 / リングをくぐる / マップ作成
92 | - アニマルカジノ
93 | - ミニゲーム / 画像の組み込み / シナリオ作成
94 | - ノベルの立ち絵、背景の進捗確認
95 | - 一旦、今週金曜の段階のものをノベルスに共有
96 | - Coulerur Offrir
97 | - 一旦休止。12月から開発再開予定
98 |
99 |
100 | # 後期3回目
101 | - 卒業制作の作業、質疑応答
102 | - キャラクターの腕の位置の調整、ボスの表示、マップデータの組み込み
103 | - マップ作成
104 | - 飛行機とカメラの動き
105 | - カードゲームの統合
106 |
107 |
108 | # 後期2回目
109 | - 卒業制作の作業、質疑応答
110 | - キャラクターの腕の位置の調整
111 | - マップ作成
112 | - 飛行機とカメラの動き
113 | - おみくじ提出先
114 | - `X:\2020年\ゲーム学科\Student\ゲームプログラム2年`
115 |
116 |
117 | # 後期1回目
118 | - 卒業制作の確認
119 | - おみくじ
120 | - 提出パッケージ作り
121 |
122 | ---
123 |
124 | # 13回目
125 | ## 卒業制作作品の名前とスクリーンショット
126 | 作品の内容をよく表した画面のスクリーンショットを `screenshot_<ゲームタイトル>.png` という名前で作成して、以下のフォルダーの作品フォルダー内にコピーして提出する。
127 |
128 | - `X:\2020年\ゲーム学科\Student\卒業制作`
129 |
130 | ## おみくじ開発RTA
131 | - 3コマ目
132 | - 15分ぐらいから、続きの作業を開始
133 | - 完成したら以下の要領で提出して、提出を報告
134 | - 提出先 `X:\2020年\ゲーム学科\Student\ゲームプログラム2年\おみくじRTA` に自分の名前のフォルダーを作成して、その中にUnityプロジェクトと実行ファイルをコピー
135 | - 提出するもの
136 | - Unityプロジェクトフォルダー
137 | - 実行ファイルが入ったフォルダー
138 | - README.txt を作成して、そこに制作時間、外部のアセットを使用していたらアセットの名前とURLのリストを書いておく
139 | - 完了者は、卒業制作、ポートフォリオ作成、就職活動の準備に戻る
140 | - RTAとしての締め切りは15:30まで
141 | - 未完成の場合、引き続き時間を計測しながら開発して、来週までに上記の要領で提出
142 |
143 | ## 内容
144 | - 参考: https://hexadrive.jp/hexablog/others/18030/
145 | - 15:30以降、提出データの作成方法のレクチャー
146 | - 提出予定のフォルダーを、作業用フォルダーなどにコピーする
147 | - Unityプロジェクトの整理
148 | - `.git`フォルダーを消す(隠しフォルダー)
149 | - 容量が大きい場合、`Library`や`Logs`、`obj`フォルダーを消す(起動が遅くなる)
150 | - フォルダー構成
151 | - README.txt の要点 参考は[こちら](https://github.com/dat19/gp2/blob/master/README.txt)
152 | - おみくじ用の README.txt を作成する(企業提出を想定)
153 |
154 | ## おみくじプロジェクトの提出フォルダーを作成してみる
155 | - 提出予定のフォルダーを、作業用フォルダーなどにコピーする(287MB 圧縮 109MB)
156 | - `.git`フォルダーを消す(隠しフォルダー) 圧縮時
157 | - 容量が大きい場合、`Library`や`Logs`、`obj`フォルダーを消す(起動は遅くなる) -> 80.5 MB / 圧縮 31.2 M
158 | - README.txtを提出フォルダー(Unityプロジェクトと同じフォルダー)に移動
159 | - Unityプロジェクトフォルダー内のBuildsフォルダーを提出フォルダーに移動させて、名前を半角英数で作品名に変更
160 | - 提出メディアがDVDやUSBメモリなどの場合は、ルートにUnityプロジェクト、実行フォルダー、README.txtを配置
161 | - クラウドなどで圧縮ファイルを提出する場合、提出用フォルダーの中に上記のものを入れ、自分の名前+Projectなどの名前にして、圧縮
162 |
163 |
164 | # 12回目
165 | ## 前期のまとめ「おみくじ2020」開発ジャム
166 | - 先行して開発してもらっているものもあるが、これは短期間で完成させることに意義がある
167 | - 前期のまとめとして、プロジェクト作成から時間を計測し、仕様を満たす作品をどのぐらい短期間で完成させられるかを競う
168 |
169 | ### 仕様
170 | - オリジナルのC#版 `X:\2020年\ゲーム学科\Teacher\Tanaka\おみくじ`
171 | - デスクトップなどローカルPCにコピーしてから実行
172 | - [仕様概要書](https://github.com/dat19/gp2/wiki/%E3%81%8A%E3%81%BF%E3%81%8F%E3%81%98%E3%82%A2%E3%83%97%E3%83%AA%E4%BB%95%E6%A7%98%E6%A6%82%E8%A6%81%E6%9B%B8)
173 |
174 | ### 流れ
175 | - 9/17
176 | - 3コマ目に仕様の確認を済ませる
177 | - 4コマ目から開発開始
178 | - 作業は随時GitHubにコミットし、あとから作業時間と経過が分かるようにする
179 | - 9/24(最終日)
180 | - 完成見込み
181 |
182 |
183 | # 11回目
184 | ## 話題
185 | - [@BelColo. ステートマシン実装の決定版ImtStateMachineについて語り尽くす](https://qiita.com/BelColo/items/a94c9ccc2d5174dc29a3)
186 |
187 | ## 内容
188 | - 各自、作業と相談
189 | - 武器や弾数の管理に特化した作品についての検討
190 | - 歩数パズルのバグ相談
191 | - ネットランキングシステムの桁数処理
192 |
193 | # 10回目
194 |
195 | ## 内容
196 | - [ラズパイ上でPHPを実行する](https://docs.google.com/document/d/1IdXQIZnTjS9ZC8QNGVmABPez1nB7jOoKgtAWEWGFl3E/)
197 | - [先週の環境構築](https://docs.google.com/document/d/1oEB2JvHmJG8E4sVknDxc7MDQeZnLsrLvHnLOKAV031c/)
198 | - 各自、作業
199 |
200 | # 9回目
201 |
202 | ## 内容
203 | - 1週間ゲームジャムに参加した人、開発中の人は報告
204 | - 1年生作品 [スイカ割り](https://unityroom.com/games/suikawarigame)
205 | - 体験入学で使う「おみくじ」アプリをUnityで作り直す
206 | - オリジナルのC#版 `X:\2020年\ゲーム学科\Teacher\Tanaka\おみくじ`
207 | - [仕様概要書](https://github.com/dat19/gp2/wiki/%E3%81%8A%E3%81%BF%E3%81%8F%E3%81%98%E3%82%A2%E3%83%97%E3%83%AA%E4%BB%95%E6%A7%98%E6%A6%82%E8%A6%81%E6%9B%B8)
208 | - [ラズパイによるLinux操作練習](https://docs.google.com/document/d/1oEB2JvHmJG8E4sVknDxc7MDQeZnLsrLvHnLOKAV031c/)
209 | - 各自、作業
210 |
211 | # 8回目
212 | ## 話題
213 | - [1週間ゲームジャムが8/10から開始](https://twitter.com/naichilab/status/1287368068390244352)
214 | - [Unity入門チュートリアル 「玉転がし」(Roll-a-Ball) ビジュアルスクリプティング版](https://learn.unity.com/project/unityru-men-chiyutoriaru-yu-zhuan-gashi-roll-a-ball-biziyuarusukuriputeinguban?utm_campaign=other_japan_newsletter_2020-7-JP-New-bolt-cm&utm_content=2020-7-JP-New-bolt&utm_medium=email&utm_source=Eloqua)
215 |
216 | ## 内容
217 | - GitHub Educationの進展を確認
218 | - [paizaのレベルアップ問題集](https://paiza.jp/works/mondai)
219 | - 値取得・出力のサンプルコード を確認する
220 | - コードを試すのは、提出欄より https://paiza.io/ja の方が便利
221 | - PHPの入出力を試す
222 | - 入力欄に、入力の値をコピペ
223 | - PHPのサンプルコードをコピペ
224 | - 実行して結果を見る
225 | - サンプルコードの内容を確認する
226 | - 分からない単語は、`php 不明な命令`で検索する。例えば`php trim`や`php fgets`
227 | - おおよその内容が分かったら、問題を解いてみる
228 | - 入力例をpaiza.ioの入力欄にコピペ
229 | - コードを書く
230 | - 実行して結果を確認
231 | - 成功したら、入力例2でも確認
232 | - どちらも成功したら、コードをコピーして、paizaの問題集の解答欄にコピペ
233 | - 念のため、動作確認をしておく
234 | - 成功したら提出
235 | - 他の見本問題も解いてみる
236 | - ある程度把握できたらスキルチェックへ
237 |
238 |
239 | # 7回目
240 |
241 | ## 予定
242 | - [依存関係逆転の原則](https://docs.google.com/document/d/1-wRF_0zVapL7yUDfpsdwAjlJq0rpkEiNWnN-AHVyEkM/)
243 | - 研究内容の進捗の確認と進め方の相談
244 | - 卒業制作や研究についての質疑応答と作業
245 |
246 | ## UnityのUI(uGUI)
247 | - 新しいシーンを作って、*Scenes*フォルダーに`UI`という名前で保存
248 | - [UnityのUI基礎](https://docs.google.com/document/d/1oUDdWBGk2XUjAyt7RLHL2a1shBwrZp-ghrOb4wzGddk/)
249 |
250 | ## Photoshopで作った画像をレイヤー分割
251 | - [テラシュールブログ. Photoshopで作った画像をレイヤー単位で分割、配置/描画順をそのままにSprite Renderで配置してくれる 「2D PSD Importer」](http://tsubakit1.hateblo.jp/entry/2018/12/18/200751#PSD-Importer)
252 | - [2d-animation-v2-samples](https://github.com/Unity-Technologies/2d-animation-v2-samples)
253 |
254 | ## PhotoshopでUIを作る
255 | kyubuns氏作の[Baum2](https://github.com/kyubuns/Baum2)を使って、PhotoshopでUnityのUIを作成する。
256 |
257 | - [CG METHOD. psdデータからuGUIにコンバートする方法](https://www.cg-method.com/entry/psd-to-ugui/)
258 |
259 | ## 参考
260 | - [Adobe. モバイルアプリおよびゲームエンジン用アニメーションの書き出し](https://helpx.adobe.com/jp/animate/using/create-sprite-sheet.html)
261 |
262 |
263 | # 6回目
264 | ## 話題
265 | - [Monaca Education. Webフロントエンド開発の学習サービス](https://edu.monaca.io/)
266 | - [paiza開発日誌. 50以上の言語に対応!何でも開発可能な無料のクラウドIDE「Repl.it」を使ってみた!](https://paiza.hatenablog.com/entry/2020/06/17/50%E4%BB%A5%E4%B8%8A%E3%81%AE%E8%A8%80%E8%AA%9E%E3%81%AB%E5%AF%BE%E5%BF%9C%EF%BC%81%E4%BD%95%E3%81%A7%E3%82%82%E9%96%8B%E7%99%BA%E5%8F%AF%E8%83%BD%E3%81%AA%E7%84%A1%E6%96%99%E3%81%AE%E3%82%AF%E3%83%A9)
267 |
268 | ## 内容
269 | - [インターフェース分離の原則](https://docs.google.com/document/d/1rr_F_RpGMpeO7t5jodhnVVXSY4CdHLbWZlrWGFfOJPI/)の復習
270 | - ShieldDamageableを実装してみる
271 | - シールドオブジェクトの作成を実演
272 | - 演習にもう一度取り組む
273 | - できたら、ドキュメントの共有URLを[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に張り付ける
274 | - リンクを知っている全員が閲覧できるようにしてください
275 | - 研究内容の進捗の確認と進め方の相談
276 | - 卒業制作や研究についての質疑応答と作業
277 |
278 | ## プレイヤー方にダメージを与える方法の検討
279 | - ◎プレイヤーサイドのダメージを呼び出すスクリプト
280 | - 今回は敵などの属性が特にないのでこれがシンプルそう
281 | - 〇プレイヤーサイドにダメージを与えるかを返すスクリプト
282 | - 敵や弾に様々な属性があるなら、ここに含めることが考えられる
283 | - △タグを使う
284 | - 実装は簡単だが、敵と敵の弾の2つのタグ判定が必要なのでちょっと微妙
285 |
286 | ※相手がだれかをタグなどで片っ端からifで判別するのは避けたい!
287 |
288 | ・敵や、敵の弾にアタッチするスクリプトAttackerを定義して、そこにパワーとダメージ処理の呼び出しを実装
289 | ・Attackerから呼び出すIPlayerDamageableインターフェースを定義
290 | ・シールドを作る。ShieldDamageableクラスにIPlayerDamageableを実装し、Damage処理と、シールドの強度、爆発時のExplosionプレハブを受け取る
291 |
292 |
293 |
294 | # 5回目
295 | ## 話題
296 | - [Unity. Learn Premium が誰でも無料でご利用できるようになりました](https://blogs.unity3d.com/jp/2020/06/23/learn-premium-is-now-available-to-everyone-at-no-cost-forever/?utm_campaign=unitynews_japan_newsletter_2020-6-JP-June-Newsletter&utm_content=2020-6-JP-Newsletter-game&utm_medium=email&utm_source=Eloqua)
297 |
298 | ## 内容
299 | - [インターフェース分離の原則](https://docs.google.com/document/d/1rr_F_RpGMpeO7t5jodhnVVXSY4CdHLbWZlrWGFfOJPI/)
300 | - できたら、ドキュメントの共有URLを[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に張り付ける
301 | - リンクを知っている全員が閲覧できるようにしてください
302 | - 研究内容の進捗の確認と進め方の相談
303 | - 卒業制作や研究についての質疑応答と作業
304 |
305 |
306 | # 4回目
307 | - [質問Meet](https://meet.google.com/yav-uzhd-wjq)
308 |
309 | ## 前回のOCPの復習、解答
310 | - [演習3解答例](https://docs.google.com/presentation/d/1rr90TQ2Qgw30NOlbIC1UPNuG2kJjj6LMKdTk5UNX5zI/)
311 |
312 |
313 | ## 内容
314 | - [リスコフの置換原則](https://docs.google.com/document/d/10FN9wUup3e7mO9zipqWuxM0HZHDAEnRzhO6w1Ql8WCw/)
315 | - できたら、ドキュメントの共有URLを[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に張り付ける
316 | - リンクを知っている全員が閲覧できるようにしてください
317 | - 研究内容の進捗の確認と進め方の相談
318 | - 卒業制作や研究についての質疑応答と作業
319 |
320 |
321 |
322 | # 3回目
323 |
324 | ## 日曜日までの課題
325 | - [オープンクローズドの原則](https://docs.google.com/document/d/1mOXcLZq31II1_8PwoAzSp4VkFMrtYipeXrmumFaWF-s/)の演習
326 | - できたら、ドキュメントの共有URLを[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/)に張り付ける
327 | - リンクを知っている全員が閲覧できるようにしてください
328 |
329 | ## ニュース
330 | - [Maps SDK for Unity](https://developers.google.com/maps/documentation/gaming/overview_musk)
331 | - [Google Maps Platformの料金](https://cloud.google.com/maps-platform/pricing)
332 | - [GCCONF '20:次世代ゲームに求められる新技術はこれだ!monoAI technology株式会社](https://youtu.be/-OFaLsoPEIg)
333 |
334 | ## 予定
335 | - 課題の解答
336 | - [長期サービスの作品と円滑に開発するための案](https://docs.google.com/document/d/17PEOWseIHh-R4R9Jobu4GFYVB1fFfeXkmU6_SWvxlX4/)
337 | - テーマブログについて
338 | - 出揃ったのを確認。一先ず現状で進めていく
339 | - 調べたり、分かったことは、すぐにブログに書き足していく(忘れるので)
340 | - SOLID原則
341 | - オープン・クローズドの原則
342 | - 卒業制作を進める
343 | - プロジェクトの共同作業の手順を確認 > [GitHubの開発フロー](https://sketchboard.me/LBSAHzZ8ynEE)
344 | - 仮のグラフィックを受け入れる準備
345 |
346 | # 2回目
347 | ## 課題
348 | - 単一責任の原則の演習・・・6/14(日) 23:59まで
349 |
350 | ## 内容
351 | - GitHub Educationプログラムを申請(Unityのクラウドビルドが使いたいので)
352 | - 利用目的が学生自身がプロジェクトを作成することなので、クラスではなく、各々に取得してもらう
353 | - https://education.github.com/pack
354 | - 参考: [学生開発者パックへの応募](https://help.github.com/ja/github/teaching-and-learning-with-github-education/applying-for-a-student-developer-pack)
355 | - 参考: [kirohi. GitHub Student Developer Packに申請する方法](https://kirohi.com/apply_github_education)
356 | - 学校名: College of Digital Arts Tokyo
357 | - Upload image をクリック
358 | - スマホなどで撮影した学生証をGmailなどでPCに送信して、Drop file here or click to upload に写真のファイルをドラッグ&ドロップ
359 | - 理由: I want to learn GitHub.
360 | - [単一責任の原則](https://docs.google.com/document/d/1NhWvY9EkbmUHmRoxp88VGcuWKzzTOa2kpFJiHeWJtiU/)
361 | - 卒業制作の準備
362 | - Unityプロジェクトの作成
363 | - グループCは、Trelloでチームを作成して、卒業制作用のボードを作成する
364 | - GitHubに、Unityプロジェクトをパブリッシュ
365 | - 解像度、ビルド設定
366 | - 作業の洗い出し
367 | - ブログの作成
368 |
369 | ## 今日までの課題
370 | - ブログ-研究テーマを考えて、最低限、タイトルを作る
371 | - 限定公開でよい
372 | - 関連記事を検索してURLを貼り付ける
373 | - https://docs.google.com/document/d/1WHlNEKhg_iqpEReh0ym9lpMSjmhjrhWGxXcyJ9T6EpY/ の確認問題のURLを[こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/) の*演習ドキュメントのURL列*に張り付け
374 |
375 | # 1回目:ガイダンス / ブログの開設と確認 / 最初の投稿
376 | - [就職活動の準備](https://docs.google.com/document/d/1ZluBZXCagWVwOSjoujLNT7iobYZoAjUH8eWHcZzFsg4/)
377 | - [SOLID原則](https://docs.google.com/document/d/1TVdyioxBuSwz89Vh92ziADulEB47P5IMolytxopdBrM/)
378 | - [質問会議室](https://meet.google.com/udg-ngkq-rbc)
379 | - ブログの開設と確認
380 | - [Qiita](https://qiita.com/)
381 | - [はてなブログ](https://hatenablog.com/)
382 | - [note](https://note.com/)
383 | - [WiX](https://ja.wix.com/)
384 | - GitHub Educationへの応募
385 | - [GitHubがこの4月からパワーアップ](https://github.blog/2020-04-14-github-is-now-free-for-teams/)
386 | - 設計について
387 | - 時間が余ったら、卒業制作の希望の聞き取り
388 | - [マミーさん. チーム「密会取り締まり委員会」の発表](https://youtu.be/-qWwYVWgczA?t=6093)
389 | - [tnkさん. 「斬新さ」から考えるゲーム開発](https://youtu.be/-qWwYVWgczA?t=3002)
390 | - [EIKIさん. ゴリラが人類を強制的にSTAY HOMEさせるゲーム](https://youtu.be/-qWwYVWgczA?t=6719)
391 |
392 | ## 来週までにやること
393 | - ブログ-研究テーマを考えて、最低限、タイトルを作る
394 | - 限定公開でよい
395 | - 関連記事を検索して、URLを貼り付ける
396 | - Google MeetにブログのURLを貼ってない人は、 [こちら](https://docs.google.com/spreadsheets/d/1Ky6bU27vJy_jl4-Yu3UiaHj-ZuHUPcQHXOVgjsRn-Mc/) にURLを報告
397 | - https://docs.google.com/document/d/1WHlNEKhg_iqpEReh0ym9lpMSjmhjrhWGxXcyJ9T6EpY/ の確認問題をやる
398 | - 時間があれば、Google Educationプログラムを申請
399 |
400 |
401 | ## 参考
402 | - Herokuのアカウント作成
403 | - GitHub Edicationが取得できたら、以下で学生パックが使える。ただし、クレジットカードが必須なので、申し込まなくてもよい
404 | - https://jp.heroku.com/github-students
405 |
406 |
--------------------------------------------------------------------------------
/README.txt:
--------------------------------------------------------------------------------
1 | ==============================================================================
2 | 体験版おみくじ2020
3 | ==============================================================================
4 | 開発環境:Windows10 + Unity2019.3.15 + Visual Studio 2019
5 | 動作環境:Windows10
6 | 開発期間:2020/9/17 - 2020/9/24
7 | 作業時間:145分
8 | 開発人数:1人
9 | 担 当:プログラム開発。グラフィックは提供されたものを利用
10 |
11 | ------------------------------------------------------------------------------
12 | ■概要
13 | 体験入学の講義で利用するおみくじアプリ。ボタンを押すとグラフィックとともに占いの結果が
14 | 表示される。
15 |
16 | ------------------------------------------------------------------------------
17 | ■フォルダー構成
18 | |- Omikuji2020フォルダー Unityのプロジェクトフォルダー
19 | |- Omikuji2020Exeフォルダー 実行環境が入っているフォルダー
20 | |- README.txt このファイル
21 |
22 | ------------------------------------------------------------------------------
23 | ■起動方法
24 | Omikuji2020Exe/体験おみくじ2020.exe をダブルクリック。
25 |
26 | ------------------------------------------------------------------------------
27 | ■操作方法
28 | ・「占い」ボタンを押すと、占いが始まる
29 | ・[ESC]キーでプログラム終了
30 | ・Omikuji2020/Data フォルダー内のPNG画像を書き換えると、表示される結果が変わる
31 | ・Omikuji2020/Data/results.txt を書き換えると、占いの結果やメッセージ、画像ファイル
32 | を変更できる。実行中での変更も可能
33 |
34 | ------------------------------------------------------------------------------
35 | ■スクリプトファイル
36 | ・Omikuji2020/Assets/Scripts/OmikujiController.cs
37 | >占いの流れを制御するためのスクリプト
38 | ・Omikuji2020/Assets/Scripts/UranaiButton.cs
39 | >占いボタンにアタッチして、ボタンを押したときの処理を呼び出すスクリプト
40 |
41 | ------------------------------------------------------------------------------
42 | ■参考URL
43 | ・https://qiita.com/r-ngtm/items/6cff25643a1a6ba82a6c
44 | >PNGファイルの読み込み方を参考にしました
45 |
46 | ------------------------------------------------------------------------------
47 | ■連絡先
48 | ・氏名
49 | ・Emailアドレス
50 | ・webサイト
51 |
--------------------------------------------------------------------------------
/isp-sample/Scripts/Attacker.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | ///
8 | /// 敵方にアタッチすると、プレイヤー方の
9 | /// IPlayerDamabeableのダメージを呼び出す
10 | ///
11 | public class Attacker : MonoBehaviour
12 | {
13 | [Tooltip("攻撃力"), SerializeField]
14 | int power = 1;
15 |
16 | void OnTriggerEnter(Collider other)
17 | {
18 | IPlayerDamageable ipd = other.GetComponent();
19 | if (ipd != null)
20 | {
21 | ipd.Damage(power);
22 | }
23 | }
24 |
25 | void OnTriggerStay(Collider other)
26 | {
27 | OnTriggerEnter(other);
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/Damageable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | public class Damageable : MonoBehaviour
8 | {
9 | [Tooltip("爆発プレハブ"), SerializeField]
10 | GameObject explosionPrefab = null;
11 |
12 | ///
13 | /// ヒットポイント
14 | ///
15 | public int hp = 2;
16 |
17 | public virtual void Damage(int damage)
18 | {
19 | hp -= damage;
20 | if (hp <= 0)
21 | {
22 | Instantiate(explosionPrefab, transform.position, Quaternion.identity);
23 | Destroy(gameObject);
24 | }
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/DefenceDamageable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | public class DefenceDamageable : Damageable
8 | {
9 | [Tooltip("これ以上のパワーじゃないとノーダメ"), SerializeField]
10 | int defence = 2;
11 |
12 | public override void Damage(int damage)
13 | {
14 | if (damage >= defence)
15 | {
16 | base.Damage(damage);
17 | }
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/DirectionalShotPlayer.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace SolidSample
4 | {
5 | public class DirectionalShotPlayer : PlayerDefault
6 | {
7 | protected override void SpecialShot()
8 | {
9 | float rotz = Vector3.SignedAngle(
10 | Vector3.right,
11 | rb.velocity.normalized,
12 | Vector3.forward);
13 |
14 | Instantiate(shotPrefab, transform.position,
15 | Quaternion.AngleAxis(
16 | rotz, Vector3.forward));
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/EnemyB.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | public class EnemyB : MonoBehaviour
8 | {
9 | [Tooltip("最高速度"), SerializeField]
10 | float maxSpeed = 4;
11 | [Tooltip("1周の秒数"), SerializeField]
12 | float rollingTime = 2;
13 |
14 | Rigidbody rb = null;
15 | float theta = 0;
16 |
17 | void Awake()
18 | {
19 | rb = GetComponent();
20 | theta = 0;
21 | }
22 |
23 | void FixedUpdate()
24 | {
25 | theta += (Mathf.PI * 2f / rollingTime) * Time.fixedDeltaTime;
26 | rb.velocity = Vector3.up * Mathf.Cos(theta) * maxSpeed;
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/FollowTarget.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | public class FollowTarget : MonoBehaviour
8 | {
9 | [Tooltip("目的オブジェクト"), SerializeField]
10 | Transform target = null;
11 |
12 | Rigidbody rb = null;
13 |
14 | void Awake()
15 | {
16 | rb = GetComponent();
17 | }
18 |
19 | void FixedUpdate()
20 | {
21 | Vector3 tg = target.position - transform.position;
22 | rb.velocity = tg / Time.fixedDeltaTime;
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/IPlayerDamageable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | ///
8 | /// 敵方(Attackerクラス)から、ダメージを受けるインターフェース
9 | ///
10 | public interface IPlayerDamageable
11 | {
12 | void Damage(int power);
13 | }
14 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/PlayerDefault.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace SolidSample
4 | {
5 | public class PlayerDefault : MonoBehaviour
6 | {
7 | [Tooltip("移動速度"), SerializeField]
8 | protected float speed = 10f;
9 | [Tooltip("ショットプレハブ"), SerializeField]
10 | protected GameObject shotPrefab = null;
11 |
12 | ///
13 | /// 移動目的座標を設定します。
14 | ///
15 | public Vector3 targetPosition;
16 |
17 | protected Rigidbody rb = null;
18 | Camera gameCamera = null;
19 |
20 | void Awake()
21 | {
22 | rb = GetComponent();
23 | targetPosition = transform.position;
24 | gameCamera = Camera.main;
25 | }
26 |
27 | void Update()
28 | {
29 | if (Input.GetButtonDown("Fire1"))
30 | {
31 | if (Input.GetButton("Fire2"))
32 | {
33 | SpecialShot();
34 | }
35 | else
36 | {
37 | Shot();
38 | }
39 | }
40 |
41 | UpdateMove();
42 | }
43 |
44 | ///
45 | /// 右ボタンが押されていたら呼び出します。
46 | ///
47 | protected virtual void SpecialShot()
48 | {
49 | Shot();
50 | }
51 |
52 | ///
53 | /// ショット時に呼び出します。
54 | ///
55 | public void Shot()
56 | {
57 | Instantiate(shotPrefab, transform.position,
58 | Quaternion.identity);
59 | }
60 |
61 | protected void UpdateMove()
62 | {
63 | Vector3 mpos = Input.mousePosition;
64 | mpos.z = transform.position.z
65 | - gameCamera.transform.position.z;
66 | targetPosition = gameCamera.ScreenToWorldPoint(mpos);
67 | }
68 |
69 | private void FixedUpdate()
70 | {
71 | Vector3 dir = targetPosition - transform.position;
72 | dir.z = 0f;
73 | float speedStep = speed * Time.fixedDeltaTime;
74 | float step = Mathf.Min(dir.magnitude, speedStep);
75 | if (!Mathf.Approximately(step, 0f))
76 | {
77 | step /= Time.fixedDeltaTime;
78 | }
79 | rb.velocity = dir.normalized * step;
80 | }
81 | }
82 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/ShieldDamageable.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace SolidSample
6 | {
7 | public class ShieldDamageable : MonoBehaviour, IPlayerDamageable
8 | {
9 | [Tooltip("耐久力"), SerializeField]
10 | int life = 10;
11 | [Tooltip("爆発エフェクト"), SerializeField]
12 | GameObject explosionPrefab = null;
13 |
14 | public void Damage(int power)
15 | {
16 | life -= power;
17 |
18 | if (life <= 0)
19 | {
20 | Instantiate(explosionPrefab, transform.position, Quaternion.identity);
21 | Destroy(gameObject);
22 | }
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/isp-sample/Scripts/Shot.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace SolidSample
4 | {
5 | public class Shot : MonoBehaviour
6 | {
7 | [Tooltip("ショット速度"), SerializeField]
8 | float speed = 15f;
9 | [Tooltip("攻撃力"), SerializeField]
10 | int power = 1;
11 |
12 | const float LifeTime = 3;
13 |
14 | private void Awake()
15 | {
16 | Rigidbody rb = GetComponent();
17 | rb.velocity = transform.right * speed;
18 | Destroy(gameObject, LifeTime);
19 | }
20 |
21 | private void OnTriggerEnter(Collider other)
22 | {
23 | Damageable en = other.GetComponent();
24 | if (en != null)
25 | {
26 | en.Damage(power);
27 | Destroy(gameObject);
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/提出データ.md:
--------------------------------------------------------------------------------
1 | # 提出用データの取りまとめ方
2 |
3 | - 提出予定のフォルダーを、作業用フォルダーなどにコピーする
4 | - Unityプロジェクトの整理
5 | - `.git`フォルダーを消す(隠しフォルダー)
6 | - 容量が大きい場合、`Library`, `Logs`, `obj`フォルダーを削除することで容量が削減できる。ただし、起動は遅くなるので容量次第で判断
7 | - フォルダー構成
8 | - README.txt の要点 参考は[こちら](https://github.com/dat19/gp2/blob/master/README.txt)
9 |
10 |
11 |
--------------------------------------------------------------------------------