Advanced Search
Search Results
65 total results found
おまけ
夏休み・練習課題
義務ではないが、練習不足と思う学生にはおすすめ 目標 Unityでの開発と調査能力を向上する 先生が教えていない課題もあるので、少し調べる必要な場合もある 迷わず、判断力、開発スピードをUPする 自分の今のゆるいところを明確し、固める ポイント: 順番気にせず、答えれるのを先に答えて、難しい質問は最後に残す 最後に回答があるが、課題により、いくつかの解決方法がある。 下記の解決は、あくまで先生のやり方である。 C# / スクリプト(言語、およびUnityのの基礎) 次の質問をC#で回答してください(1行〜5...
C#の「イベント」(event)
概念 ここまで、C#で学んだ主な概念は メンバー変数:あるインスタンス(オブジェクト)のデータを保持するもの 体力 アイテムの一覧 速度 色 など メソッド:あるインスタンス(オブジェクト)が「できる」こと。データを処理する「関数」 走る ジャンプ 攻撃 フレーム毎の更新(Update) 初期化(Start) など クラス:インスタンスの「図形」であり、new (一般のC#) または Instantiate(Unity の Monobehavior / プレハブ)で具体化し、インスタンスになる。メン...
Unityで待機ができる処理:非同期処理
概念 Unityのスクリプトでは、Start()、Update()、OnTriggerEnter() などの定めたときに実行するメソッドがある(初期の時、フレーム毎、トリガーに入った) この機能が大変便利であるが、ゲームを開発中には、上記のメソッドを呼び出される瞬間ではなく、少し時間たってから実行したい場合もたくさんある。 例えば: 体力がゼロになった場合、すぐにゲームオーバーを表示するのではなく、主人公が倒れるアニメーションを再生し終わってからゲームオーバーを表示したい。 ローディング画面を表示し、次のステージ...
ゲームエンジンⅡ
ゲームに必要な数学を学ぼう!
ゲームエンジンⅢ
Unityを使って、スマホのゲーム開発してみましょう~
バージョン管理ツール「git」
gitを使用し、大事に作ったプロジェクトのバックアップしましょう。
バージョン管理システム
バージョン管理システム(Version Control System - VCS)はコンピュータ上でファイルの変更履歴を管理するシステムです。 現在、ゲームを作成している際にミスをした場合、数回アンドゥ(元に戻す)操作を行って戻ることができます。しかし、これはプログラムを起動し続けている間のみ有効です。Unityを一度閉じて後で再起動した場合、それまでに行った変更を取り消すことはできません。 さらに、誤ってファイルを削除してしまうこともあるでしょう。この場合、ファイルは失われてしまい、一から作り直すしか選択肢...
Gitの操作の流れ
よく使うコマンド 履歴に「チェックポイント」を追加 コマンド:git commit バージョン管理システムは、いつ作業のチェックポイントを作成すべきかを自動的に判断できないため、変更を保存したいタイミングを自分で指示する必要があります。バージョン管理システムに変更を保存したいと伝えると、システムは前回の登録以降に変更されたすべての内容を含むチェックポイントを作成します。 必要に応じて、後からこれらのチェックポイントのいずれかに戻ることができます。そのため、通常は小さな機能を実装した後やバグを修正した後など、頻繁...
Githubとは
GitHubは、無料のリモートリポジトリを提供するオンラインサービスです。GitHubを使用することで、プロジェクトのオンラインコピーを保管し、自宅で作業を続けることができたり、コンピューターが故障した場合のバックアップとして利用したりできます。 GitHubの利用は無料ですが、ファイルサイズに制限があります。アップロードできるファイルは最大100MBまでです。それより大きなファイルをアップロードしたい場合は、Git LFS(large file system)に月額料金を支払って登録する必要があります。 次...
ゲーム数学
苦手であっても、ゲーム開発に絶対に必要な数学を理解しましょう。
三角関数
三角関数とは、平面三角法における、角度の大きさと線分の長さの関係を記述する関数の族、およびそれらを拡張して得られる関数の総称である。 簡単にいうと、上記の図で 角度 θ が知っていれば、成分 px と py の数値は何? 成分 px と py が知っていれば、角度 θ はどうなる? この関係が「三角関数」で求めることができる。 「ラジアン」とは 三角法に由来する三角関数という呼び名のほかに、単位円を用いた定義に由来する円関数という呼び名がある。単位円とは、半径が 1 の円のことである。 円の周囲の長...
線型代数学
ベクトル ベクトルとは、一般的には「大きさと向きをもつ量」であり「矢印で表すことのできる量」である。 2次元のベクトルは2つの成分(x, y)があり、3次元の場合は3の成分(x, y, z)がある。Unityでは Vector2 と Vector3 の構造体があり、それぞれのベクトルを作成ができる。 Vector2 vec2D = new Vector2(vx, vy); // vxとvyはfloatである Vector3 vec3D = new Vector3(vx, vy, vz); // vzも...
3Dモデルの仕組み(その1)
今まで、FBXファイルでモデルをダウンロードし、そのまま使ってきましたが、実際にどう作られているのか調べてみましょう。 頂点(Vertex / バーテックス) 頂点は3D空間の「ある位置」を表している。普通、3次元ベクトルとして表現する。この位置を適切に繋がることにより、3Dの形状を作成できる。例えば、普通の立方体は頂点は8点がある: 頂点の配列 0 (-1, -1, -1) 1 ( 1, -1, -1) 2 ( 1, 1, -1) 3 (-1, 1, -1) 4 (...
各種の変換(トランスフォーム)
今まで、物体の移動(位置)、回転と拡大縮小をUnityの「transform」コンポーネントを使ってやってきました。 実は裏側でなにが行われているのか、学んでいきましょう。 移動(位置) 一番簡単なのは、「移動」(位置)である。基本的に、メッシュの各頂点を移動させたい量を足すだけで実現できる。学んできた「ベクトルの足し算」を使えば、すぐ実装できる: ここで「v'」は移動した頂点で、「v」は元の頂点で、「t」は移動ベクトルである。 練習 MyTransform のスクリプトを作成し、MyC...
オイラー(Euler)回転の弱点:ジンバルロック
ここまで学んできた回転方法は「オイラー」(Euler)回転といい、x, y, zの各軸ごとに別々に回転することにより、オブジェクトに連続に適用すると、自由に回転できる… 設定しても、回転順番を決めないといけない。X→Y→Z / Y→Z→X / X→Z→Y などの様々な組み合わせがあり、それぞれの最終結果がことなるので、混乱する可能性がある。 また、「ジンバルロック」という問題もある。次の装置を見てください。この装置は「X(赤)→ Y(緑)→ Z(青)」の順番で回転する装置。この状態で、物体が各軸の周りの回転...
単純な物理
ゲームでよく使われそうな物理を練習しましょう。以下の処理は、Unity の Rigidbody を対応してくれる処理である。 移動、速度、加速度 移動と速度の関係性 次の状況を考えてみてください:あるキャラクターは2D空間の位置「p = (px, py)」にいる。このキャラクターは定めた時間「Δt」をかけて、ある目的地「q = (qx, qy)」に到着させたい。 この場合は、移動に必要な速度「v = (vx, vy)」を求めることができる: 始点「p」から終点「q」までの距離(と向き)を到着...
当たり判定
Unityのコライダーのおかげで、当たり判定は自動的に計算され、「OnCollisionXXX」「OnTriggerXXX」で衝突があった時にお知らせを受け取る、処理ができるが、実際に裏側でなにを行っているのか理解してみましょう。 球体同士 まず、一番楽なのは、球体同士の当たり判定である。以下の図を確認し、考えてみましょう 円「C」(中心点 (cx, cy)、半径 cr )と「D」(中心点 (dx, dy)、半径 dr )があるとして、中心の間の距離は、中心の差のノルムである: ...