Advanced Search
Search Results
53 total results found
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 )があるとして、中心の間の距離は、中心の差のノルムである: ...
3Dモデルの仕組み(その2)
模様を付けましょう:UV座標 今までのモデルはすべて白い色で表示してきたが、実際にゲームで使うものは一定色ではない。前回作成した「MyCube」をベースにし、複雑な模様(テクスチャ)を付けてみましょう。具体的に、以下のようなサイコロを作ってみましょう この効果を再現するため、2次元の画像を3次元の立方体に貼らないといけないが、そのためなんとかして、「ペーパークラフト」のように3Dのオブジェクトを真っ平にし、2Dに展開しなければならない。 3Dモデルの場合、このプロセスは「UV展開」という。「U...
シェーダー
シェーダーはGPU(グラフィックスカード)で実行する特別なプログラムである。シェーダーを使うことにより、3Dモデルの「見せ方」(描画)などを自由に変えることができる。ただし、GPUで実行するプログラムは普通のCPUのプログラムと異なり、使い方を学ばないといけない。 GPUとCPUの違い CPUは「多目的のプロセッサー」で、タスクを切り替えるのは得意な要素である。例えば、Chromeでネットを調べ、見つけたソースコードをVisual Studioに貼り付けたい。プログラムを切り替えるときに、CPUは一旦Chromeを...
Shader Graph
プロジェクト設定 ShaderLabの自由度が高く、とてもパワフルなシェーダの作り方であるが、やや難しいところもある。複雑で高速なシェーダが必要なら、ShaderLabの方が良いと思われるが、単純なシェーダなら、Shader Graphの方が楽で、作るのも速くなる。 Shader Graphは言語ではなく、「ノード」というブロックを紐でつなげることにより、視覚的にシェーダを作成ができる。 まず、Shader Graphをインストールしましょう。Unityの Package Manger から Shader Gr...
プロジェクト仕組みの理解
ゲームの目的 スマホを傾いて、卵を転げて、巣まで届かせましょう!ただ、強くぶつかると、卵が割れてしまうので、優しくね!生まれたひよこちゃんが邪魔するので、ドアをうまく使って、移動制限させましょう! ゲームシーン Scenesフォルダーの中にある「EggRace」を開いてください ヒエラルキーを見ると: Main Camera:ゲームのカメラで、上から真下見るようにしちます: Directional Light:光源 Black:見せたくないステージの一部を黒いバーで隠すためのオブジェクト Stage:ステ...
スマホ機能のまとめ
卵の操作
これからスクリプトを作成し、卵の動き処理を実装しましょう。 シーン設定 迷路の左上に Prefabs の中にある Egg を入れてください: キーボードによる卵の動き スマホで遊ぶ前に、まずUnityで動作を確認したいので、キーボードを使い、重力の向きを変えて、卵が転がるようにしましょう。 重力を変えるには2つの方法がある: プロジェクト設定で重力を変える 1回だけ重力を変え、後がずっと変わらないなら、プロジェクト設定で重力ベクトルを変えることができる。「Edit ⇒ Project Settings」を開き「...
Unityを使用するスマホの開発
Unityでのスマホ開発:何が異なる? No input Several screen sizes Low power / low CPU iOSの場合は Require mac Require dev credetials Require device credentials Androidスマホの設定、Unityとの接続 Enable Developer mode, enable USB debugging Connect, allow permissions Project settings, Android...
扉の操作
画面のタッチ機能を使い、指のスライドで、扉を動かしてみましょう。 タッチ機能 加速度センサーと同様に、タッチ機能を使う前には、機能の有効化をしないといけない。Unityでは: // タッチ機能を有効化 EnhancedTouchSupport.Enable(); その次に、タッチのイベントに登録しなければならない: // 画面を触れ始めたとき Touch.onFingerDown += 処理メソッド; // 指は移動中のとき Touch.onFingerMove += 処理メソッド; // 指が画面から放したと...