├── 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 | --------------------------------------------------------------------------------